我正在尝试在Gearman工作器代码中运行我的php脚本,但也想监视 除此之外,如果他们花费超过预期的运行时间,我想杀死那些脚本。每个脚本必须及时运行(比如每10分钟运行一次)和Gearman客户端选择,脚本已准备好运行,将它们发送给Gearman工作人员。
我尝试使用以下选项:
1)尝试使用独立脚本,一个监视正在运行的进程的普通php脚本。 但是这个正常的脚本不会告诉Gearman工作被杀,而Gearman认为被杀的工作仍然在运行。
因此,我认为我必须在同一个工作程序中同步监视和运行php脚本的过程。 这些工作也需要重新启动,客户端负责这些工作。
2)我使用以下命令运行我的php脚本:
cd /home/amehrotra/include/core/background;php $workload
;(这是阻塞在脚本完成执行之前不会转到下一行。)
我尝试使用exec,但exec不执行脚本 exec(“/ usr / bin / php / home / amehrotra / include / core / background / $ workload> / dev / null&”);
3)尝试运行2个工作程序,一个用于运行php脚本另一个用于监视,但Geraman客户端不连接到两个工作程序。
答案 0 :(得分:0)
不是最酷的计划,但尝试使用数据库作为控制一切的中心位置。 这将为您的员工节省一些资源和时间,但要使其易于管理是成本。
Worker需要检查通过db分配给他的命令(停止/重启)。并且他还可以将一些数据保存到数据库中,这样您就可以看到正在发生的事情。