运行没有网页的PHP脚本等待它完成

时间:2014-08-30 14:26:37

标签: php jquery ajax json cross-domain

我有一些基本的网站跟踪软件,可以将JSON object jQuery AJAX从网页跨域发送到服务器,其中数据由php脚本处理。这是在window.onbeforeunload上触发的。

在对php脚本进行基准测试时,我意识到在加载下一页之前,不同域上的客户端网站仍在等待php脚本完成运行。例如,客户端站点的访问者导航到另一个页面。我们将JSON object跨域发送到服务器进行处理。如果我将sleep(30);添加到我的php脚本,则客户端网站将不会加载下一页,直到此php脚本完成(30秒以上)。

运行此脚本后我不需要返回任何值,那么如何确保运行此php脚本而不会对客户端站点产生任何影响?

我希望我能够很好地解释自己。如果我没有问任何问题,谢谢。

解决方案:

这对我有用(http://php.net/manual/en/features.connection-handling.php#93441):

ob_end_clean();
header("Connection: close\r\n");
header("Content-Encoding: none\r\n");
ignore_user_abort(true); // optional
ob_start();
echo ('Text user will see');
$size = ob_get_length();
header("Content-Length: $size");
ob_end_flush();     // Strange behaviour, will not work
flush();            // Unless both are called !
ob_end_clean();

//do processing here
sleep(5);

echo('Text user will never see');
//do some processing

1 个答案:

答案 0 :(得分:1)