当前位置:  开发笔记 > 编程语言 > 正文

PHP后台进程

如何解决《PHP后台进程》经验,为你挑选了5个好方法。

我正在尝试创建一个PHP脚本,我已经完成了脚本,但是它需要10分钟才能完成它的设计过程.这不是问题,但我认为我必须一直保持页面加载这很烦人.我可以拥有它以便我启动该过程然后在10分钟后返回并查看它生成的日志文件吗?



1> bastiandoeen..:

好吧,你可以使用" ignore_user_abort(true)"

所以脚本将继续工作(密切关注脚本持续时间,也许添加" set_time_limit(0)")

但是这里有一个警告:你将无法使用这两行来停止脚本:

ignore_user_abort(true); 
set_time_limit(0);

除了你可以直接访问服务器并杀死那里的进程!(在那里,做了一个无休止的循环,一遍又一遍地呼唤自己,使服务器突然停止,大声吼...)



2> Gary Richard..:

听起来你应该有一个队列和一个外部脚本来处理队列.

例如,您的PHP脚本应该将一个条目放入数据库表并立即返回.然后,每分钟运行一次的cron检查队列并为每个作业分叉一个进程.

这里的优点是你不会将apache线程锁定10分钟.



3> Christopher ..:

在windows下我遇到了很多关于这种过程的问题; 我的情况有点不同,因为我不关心"脚本"的响应 - 我希望脚本启动并允许其他页面请求在忙着工作时通过.

由于某些原因; 我有问题要么挂掉其他请求,要么在大约60秒后超时(apache和php都会在大约20分钟后超时); 事实证明firefox在5分钟后(默认情况下)超时,所以在那之后你无法通过浏览器知道发生了什么而没有更改firefox中的设置.

我最终使用进程打开并处理close方法在cli模式下打开php,如下所示:

pclose(popen("start php myscript.php", "r"));

这将(使用start)打开php进程然后终止启动进程让php运行不管它需要多长时间 - 再次你需要杀死进程来手动关闭它.它不需要你设置任何超时,你可以让当前调用它的页面继续并输出更多细节.

唯一的问题是,如果您需要向脚本发送任何数据,您可以通过其他来源执行此操作,也可以将其作为参数传递给"命令行"; 这不太安全.

虽然工作得很好,但确保脚本始终启动并允许在没有任何中断的情况下运行.



4> warren..:

这可能也是有帮助的:PHP中的异步shell exec



5> 小智..:

我认为shell_exec命令就是你要找的.

但是,它在安全模式下禁用.

关于它的PHP手册文章在这里:http://php.net/shell_exec

这里有一篇关于它的文章:http://nsaunders.wordpress.com/2007/01/12/running-a-background-process-in-php/

推荐阅读
mobiledu2402851203
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有