长时间运行的PHP程序解决方案
来源:互联网 发布:java项目开发环境 编辑:程序博客网 时间:2024/05/17 04:22
描述:有时候,PHP程序会面临AJAX过来的调用,但逻辑处理的运行又比较漫长,如外部调用svncheckout某个项目,那么就会导致几个问题:客户端超时,返回数据集超大,服务器端脚本超时,内存占用巨大等
比较了几个解决方案,以下这个能比较好地解决上述问题,对服务器的调整也不会造成太大影响。
伪daemon程序,原理:主php程序执行,并不等结果完成就直接返回,中断与浏览器连接,但是断开后仍能保持执行状态,执行过程中建立log文件以备查询,相当于一个daemon。浏览器端的ajax可设时间轮询执行状态,轮询程序查询log文件并返回结果;
步骤:
1. 设置.htaccess,确保返回的Content-Type encoding不是gzip
<IfModule mod_env.c>
SetEnvIfNoCase Request_URI "\.php$" no-gzip dont-vary
</IfModule>
2.设置中断返回以及长时间运行设置
set_time_limit(0);
ignore_user_abort(true);
// buffer all upcoming output - make sure we care about compression:
if(!ob_start("ob_gzhandler"))
ob_start ();
echo $stringToOutput ;
// get the size of the output
$size = ob_get_length();
// send headers to tell the browser to close the connection
header("Content-Length: $size");
header('Connection: close');
// flush all output
ob_end_flush();
ob_flush();
flush();
// close current session
if (session_id()) session_write_close(); //close connection
// here, do what you want.
0 0
- 长时间运行的PHP程序解决方案
- iOS后台长时间运行解决方案
- 长时间运行的spark-streaming程序自动退出的问题
- 后台运行长时间php进程 数据库连接不上的问题
- android 后台服务长时间运行---解决方案
- 查看长时间运行的session
- 怎样能够长时间运行php脚本
- iOS 程序后台运行保持程序后台长时间运行
- PHP+jQuery模拟一个进程,动态获取长时间运行的进程
- Delphi开发的后台服务程序也可以7x24小时长时间稳定运行
- Swing多线程处理长时间运行的事件
- SQL SERVER 找出长时间运行的事务
- IOS后台长时间运行的多种方法
- Matlab长时间运行越来越慢的问题
- Windows程序运行不能通过的解决方案
- 61.[PHP]PHP 程序的运行方式
- IOS运行程序长时间误动作时自动退出
- 好长时间没用的------php-----数据库连接类
- MySQL数据库DML操作
- 进程间通信IPC
- Throw和Throws的区别
- 欢迎您在新浪博客安家
- 对未来WEB APPLICATION的开发需求…
- 长时间运行的PHP程序解决方案
- 敏捷宣言 2001.2
- 心情语录
- 谈如何认识与避免伪命题
- 常用命令笔记
- 安卓activity生命周期
- 我看《子弹在飞》
- IIC总线协议
- 加沙事件叹言