我该如何编写PHP工作进程?

4

我有一个PHP脚本需要运行一些相当繁重的imagemagick命令。

这些命令可能会被多个用户同时运行,因此用户a、b、c和d都将运行相同的任务。我想把它变成后台进程,这样我就可以使用jQuery来在处理过程中显示加载条。

有什么最好的方法来实现这个?或者,还有其他更容易的方法吗?


你考虑过使用AJAX吗?我的意思是,只需调用请求并启动服务器端的操作,同时显示加载栏,直到收到响应为止。 - user684202
2个回答

3

有很多关于如何使用PHP创建守护进程的指南:
http://kevin.vanzonneveld.net/techblog/article/create_daemons_in_php/

或者如何将进程放在后台运行:
http://waynepan.com/2007/10/11/how-to-use-ignore_user_abort-to-do-process-out-of-band/

您可以创建一个在后台运行的守护进程,从包含所有需要处理作业的数据库表中读取,然后您可以定期检查该表以查看特定进程的所有作业是否已清除。

您还可以使用消息队列,这样您就可以在不冲突的情况下使用多个并行的守护进程(例如在多核系统上)。


1
顺便说一句,小心有些共享网络主机不支持多个长时间运行的PHP进程 ;) - bardiir

-2

我寻找了几个小时,但最终发现使用Cron Jobs非常简单。在cPanel中,您可以进入“高级”->“Cron Jobs”,然后安排一个任务,使用命令行中的PHP脚本。

以下是执行PHP脚本的命令示例:

/usr/bin/wget http://www.example.com/miscript.php

或者更好:

php /home/USER/public_html/miscript.php

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接