如果我正在生成一个数据流发送到浏览器,并且用户关闭浏览器,我可以告诉PHP内我不需要麻烦生成或发送其余的流?我想插入一些进入这个循环:PHP可以告诉浏览器何时消失?
while (!feof($pipes[1])) {
echo fgets($pipes[1]);
}
我的后备计划是让浏览器使用JavaScript onunload的打另一个PHP页面杀死正在生成数据的过程,但它是,如果清洁PHP可以告诉我何时回应无处不在。
如果我正在生成一个数据流发送到浏览器,并且用户关闭浏览器,我可以告诉PHP内我不需要麻烦生成或发送其余的流?我想插入一些进入这个循环:PHP可以告诉浏览器何时消失?
while (!feof($pipes[1])) {
echo fgets($pipes[1]);
}
我的后备计划是让浏览器使用JavaScript onunload的打另一个PHP页面杀死正在生成数据的过程,但它是,如果清洁PHP可以告诉我何时回应无处不在。
默认情况下,如果用户导航离开,PHP将中止脚本。不过有些时候你不希望发生这种情况,所以php有一个你设置的配置叫做ignore_user_abort
。
http://php.net/manual/en/misc.configuration.php
还有一个函数register_shutdown_function(),假设在执行暂停时执行该函数。我从来没有真正使用它,所以我不会担保它的工作效果,但我想我会提到它的完整性。
我相信,脚本会在正常加载时自动中止(No ajax)。但是,如果你想通过使用xmlhttprequest通过PHP实现某种长轮询,我认为你将不得不用某种JavaScript来做,因为那时PHP无法检测到它。还想知道确切的情况。
这些答案指出我正在寻找什么。潜在的过程需要特别注意杀死它。我需要跳出循环。再次感谢Stack Overflow。
while (!feof($pipes[1]) && !connection_aborted())
{
echo fgets($pipes[1]);
}
if (connection_aborted())
{
exec('kill -4 '.$mypid);
}
关闭,但在这种情况下,他只是想停止处理用户中止数据。 – Ballsacian1 2009-07-04 19:23:07