3

例如

<?php

//GetParameters here

//send response/end connection

//keep executing the script with the retrieved parameters.
4

1 回答 1

1

你可以这样做,只是可能需要一些修补。您需要使用不同的脚本处理数据,而不是尝试关闭第一个脚本上的连接。

<?php

//Get Parameters

//Send output to user

//now use curl to access other script

$post = http_build_query($_POST); // you can replace this with a processed array

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/otherscript.php");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
curl_exec($ch);
curl_close($ch);

?>

其他脚本.php

<?php

header( "Connection: Close" );

// do your processing

?>

只是为了解释一下,当 curl 连接时,它会获得一个连接关闭的标头,因此 curl 退出。同时,“其他脚本”正在处理没有打开连接的数据。

我很确定使用 exec() 也可能是一种选择。您可以简单地在命令行上使用 php 调用 otherscript,将变量作为 cmd 行参数传递。如果你正在运行 linux,这样的东西应该对你有用:

exec("nohup php -f otherscript.php -- '$arg1' '$arg2' < /dev/null &");

现在 otherscript.php 正在后台以不同的进程 ID 运行

于 2012-11-15T02:34:12.883 回答