【发布时间】:2011-10-04 15:51:14
【问题描述】:
我一直在尝试完成一个脚本,该脚本向用户浏览器发送适当的通知以关闭连接,但允许服务器继续处理请求。我的代码是基于我所看到的:
http://www.php.net/manual/en/features.connection-handling.php#71172
和
ob_start();
echo ('Text the user will see');
$size = ob_get_length();
ignore_user_abort(); // optional
header('Content-Encoding: none');
header("Content-Length: $size");
header("Connection: close");
// flush all output
ob_end_flush();
ob_flush();
flush();
sleep(5);
//just a test to see if the script continues to run
file_put_contents("trash/".date('dmY-H_i_s_1').".txt", "Some text.");
file_put_contents("trash/".date('dmY-H_i_s_2').".txt", "Some text.");
file_put_contents("trash/".date('dmY-H_i_s_3').".txt", "Some text.");
当我运行脚本时,有时它会创建第一个文件但不会将文本写入其中。有时它不会创建任何文件。如果我在注释掉返回早期代码的情况下运行脚本,则所有三个文件都创建得很好。 Zlib 压缩已关闭。有什么想法吗?
【问题讨论】:
-
如果您希望服务器停止处理请求,请使用:exit() 或 die()
-
你的意思是你想关闭与浏览器的连接,但在后台继续用 PHP 做事?不要认为你可以,除非你产生一个单独的进程。
-
@FeidaKila:在
exiting 或dieing 之后,他将如何处理文件? -
是的,我确实希望服务器在关闭连接后继续在后台工作。
标签: php