PHP可以告诉浏览器何时消失?

时间:2009-07-04 18:39:34

标签: php

如果我正在生成要发送到浏览器的数据流,并且用户关闭了浏览器,我可以在PHP中告诉我不需要生成或发送剩余的流吗?我想在这个循环中插入一些东西:

while (!feof($pipes[1])) {
   echo fgets($pipes[1]);
}

我的后备计划是让浏览器使用JavaScript onunload命中另一个PHP页面来杀死正在生成数据的进程,但如果PHP可以判断我何时无处回应,那么它会更清晰。

4 个答案:

答案 0 :(得分:10)

默认情况下,如果用户导航,PHP将中止脚本。但是有些时候你不希望这种情况发生,所以php有你设置的名为ignore_user_abort的配置 http://php.net/manual/en/misc.configuration.php

答案 1 :(得分:1)

还有一个名为register_shutdown_function()的函数,应该在执行停止时执行。我从来没有真正使用它,所以我不会保证它有多好用,但我想我会提到它的完整性。

答案 2 :(得分:1)

我相信脚本会在正常加载时自动中止(No ajax)。但是,如果你想通过php使用xmlhttprequest实现某种长轮询,我认为你将不得不用某种javascript来做,因为那时php无法检测到它。也想知道确切的情况。

答案 3 :(得分:0)

这些答案指出了我正在寻找的东西。潜在的过程需要特别注意杀死它。我需要跳出循环。再次感谢Stack Overflow。

 while (!feof($pipes[1]) && !connection_aborted())
 {
  echo fgets($pipes[1]);
 }

 if (connection_aborted())
 {
  exec('kill -4 '.$mypid);
 }