Pas*_*TIN 16
该ignore_user_abort
指令和ignore_user_abort
功能都可能是你在找什么:它应该让你发送给浏览器的响应,并在此之后,仍然在服务器上运行一些计算.
关于它的这篇文章可能会让你感兴趣:如何使用ignore_user_abort()来进行带外处理 ; 引用:
编辑2010-03-22:在看到@Joel的评论后删除了链接(指向http:// ! waynepan.com/2007/10/11/ ! how-to-use-ignore_user_abort-to-do-process-out-of-band/
- 删除空格,!
如果你想尝试).
基本上,当您
ignore_user_abort(true)
在php脚本中使用时 ,即使用户按下esc或停在浏览器上,脚本也会继续运行.你怎么用这个?
一种用途是将内容返回给用户并允许在处理不需要用户交互的事物时关闭连接.以下示例向
$response
用户发送 ,关闭连接(使浏览器的微调器/加载栏停止),然后执行do_function_that_takes_five_mins();
给出的例子:
ignore_user_abort(true);
header("Connection: close");
header("Content-Length: " . mb_strlen($response));
echo $response;
flush();
do_function_that_takes_five_mins();
Run Code Online (Sandbox Code Playgroud)
(还有更多我没有复制粘贴)
请注意,您的PHP脚本仍然必须符合max_execution_time
和memory_limit
约束 - 这意味着您不应该将此用于需要花费太多时间的操作.
这也将使用一个Apache进程 - 这意味着您不应该有几十个页面同时执行此操作.
不过,我想,提高使用体验的好方法;-)
归档时间: |
|
查看次数: |
8592 次 |
最近记录: |