12

我正在使用带有 PHP 5.3.8 的 Ubuntu Natty。我刚刚让 Gearman 在我的服务器上工作。

我用 PHP 手册中的一些脚本做了一些测试,一切正常。

但是,我想知道是否有一种方法可以在后台运行工人,并对其进行监控,以便当我转向多工人情况时,我可以跟踪我有多少工人在职的。

通常,我必须打开两个终端,一个用于工作人员,一个用于客户端。在执行 php 脚本后,worker 的那个就变成了“卡住”。

提前致谢。

4

3 回答 3

19

好的。我找到了解决我之前问题的方法。它涉及使用 Supervisord 对齿轮工进行去魔化。

这是安装Supervisord的方法

apt-get install python-setuptools
easy_install supervisor
echo_supervisord_conf > /etc/supervisord.conf

下面是如何配置它(首先从这里获取一个初始化脚本并将其保存到/etc/init.d/supervisord),然后执行以下操作:

chmod +x /etc/init.d/supervisord
update-rc.d -f supervisord defaults

然后你需要更新你的 supervisor.conf 文件来告诉 supervisord 你想作为一个守护进程运行哪个命令(当然,这将是你的 gearman worker)。以下只是您将添加到 supervisord.conf 文件的示例,您需要根据自己的具体情况对其进行更新。

[program:gearman]
command=/usr/bin/php php_gearman_worker.php
numprocs=1
directory=/root/gearman
stdout_logfile=/root/gearman/supervisord.log
environment=GEARMAN_USER=gearman
autostart=true
autorestart=true
user=gearman
stopsignal=KILL

完成后,启动 supervisord 即/etc/init.d/supervisord start

完成此操作后,您的 Gearman 工作器现在处于活动状态,您现在可以通过命令行或浏览器运行您的 gearman 客户端。

我希望这有帮助。

于 2011-12-08T16:11:52.967 回答
5

对于后台工作人员,您可以使用 Brian Moon 的 GearmanManager https://github.com/brianlmoon/GearmanManager

于 2011-12-07T21:35:25.647 回答
5

另一种选择是用于screen将工作任务放入分离的外壳中:

screen -d -m php worker.php
于 2013-05-15T07:03:15.713 回答