通过Gearman监控php脚本

通过Gearman监控php脚本,php,gearman,Php,Gearman,我试图在Gearman worker代码中运行我的php脚本,但也希望监视 此外,如果它们占用的时间超过了预期的运行时间,我想终止这些脚本。每个脚本都必须及时运行(比如说每10分钟运行一次),Gearman客户机会选择准备运行的脚本并将其发送给Gearman worker 我尝试使用以下选项: 1) 尝试使用一个独立的脚本,一个监视运行进程的普通php脚本。 但这个普通脚本不会通知Gearman作业已被杀死,Gearman认为被杀死的作业仍在运行 因此,我认为我必须在同一个worker中同步监视

我试图在Gearman worker代码中运行我的php脚本,但也希望监视 此外,如果它们占用的时间超过了预期的运行时间,我想终止这些脚本。每个脚本都必须及时运行(比如说每10分钟运行一次),Gearman客户机会选择准备运行的脚本并将其发送给Gearman worker

我尝试使用以下选项:

1) 尝试使用一个独立的脚本,一个监视运行进程的普通php脚本。 但这个普通脚本不会通知Gearman作业已被杀死,Gearman认为被杀死的作业仍在运行

因此,我认为我必须在同一个worker中同步监视过程和运行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) 尝试运行两个worker,一个用于运行php脚本,另一个用于监视,但Geraman客户端没有连接到两个worker。

这不是最酷的计划,但尝试使用数据库作为控制一切的中心位置。 这将需要一些资源和时间为您的工人,但这是成本,使其易于管理


工人需要检查通过db分配给他的命令(停止/重新启动)。他还可以将一些数据保存到数据库中,这样您就可以看到正在发生的事情。

在worker中,我只是传递worker名称,然后用exec(“scriptname.php>/dev/null 2>&1&”)编辑并执行php脚本;请详细说明停止/重新启动的功能。工作人员启动时,请使其保存进程的pid。然后在每个任务完成后,让工作人员检查状态。如果状态是停止,那么就自杀。如果重新启动然后执行(kill XXX&&sleep 1&&start)如果Gearman工作人员使用PHP,您能否在内部安排他们,使他们停止10分钟以上,将他们处理的文件/记录标记为“失败”?看起来比杀戮过程要优雅得多。