【发布时间】:2010-01-31 08:10:00
【问题描述】:
我正在使用 flash 调用需要进行一些处理的 PHP 页面。是否可以让 PHP 继续处理但无论如何显示响应以便 flash 不会停止等待?
【问题讨论】:
我正在使用 flash 调用需要进行一些处理的 PHP 页面。是否可以让 PHP 继续处理但无论如何显示响应以便 flash 不会停止等待?
【问题讨论】:
我的回答来自here:
您可以发送 Connection:Close 标头, 为您的用户完成页面, 但可以让你执行一些事情 “页面加载后”。
有一种简单的方法可以忽略用户 中止(也参见php manual):
ignore_user_abort(true);
【讨论】:
使用输出控制又名输出缓冲来做到这一点。 http://www.php.net/manual/en/function.ob-flush.php
【讨论】:
你可以试试flush()
举个例子,试试这两条不同的代码:
// without flush()
foreach ( range(1, 5) as $num ) {
echo "Beep $num<br>";
sleep(1);
}
// with flush()
foreach ( range(1, 5) as $num ) {
echo "Beep $num<br>";
flush();
sleep(1);
}
【讨论】:
如果您不需要等待处理结束以输出内容(即,如果您不需要输出与您希望的处理结果相关的任何内容,则可以在 register_shutdown_function 中的已注册函数内关闭连接做)。
见:http://www.php.net/manual/en/features.connection-handling.php#93441
之所以把它放在 register_shutdown_function 中是因为即使客户端中止连接,处理也会一直持续到最后。
【讨论】: