2011-07-20 30 views
4

我们在Ubuntu上使用Gearman/PHP来委托我们的进程。在这台(开发)机器上,我们打开了几个终端窗口分别启动客户和工人,但现在在现场机器上,我们需要将我们的客户和工作人员置于后台,以便我们的终端免费。GearmanManager在后台

我们找到了brianlmoon的GearmanManager。它看起来正是我们需要的,但问题在于,在它的代码中,我们只能找到将工作人员派遣到后台的部分,而没有关于如何与客户端做同样的事情。

有人可以给我们更多的投入如何使用GearmanManager将所有客户端/服务器进程发送到后台?

+0

嗯,通常不需要deamonized客户...我认为你必须扩大这一点的代码,创建一个client_dir和更改扫描通过这一点点。不应该那么难,守护进程的基础是一样的。 – Wrikken

+0

当你说发送到后台,你的意思是'php myscript.php',并希望脚本在后台运行,所以你可以让你的bash提示又可用?如果是这样,你可以运行'php myscript.php&' – luckytaxi

+0

对于我来说,“守护进程”的客户端意味着异步执行。客户端从服务器请求一些东西,服务器会回应它会得到它,客户端进入“状态请求”循环,服务器返回“Not yet”,直到完成。等等。 – 2011-07-20 23:40:55

回答

1

PHP的Gearman PECL扩展是你应该调用的:http://php.net/gearman 当你想把客户进程发送到后台时,你只需要使用GearmanClient-> doBackground方法。然后客户可以继续执行其他任务或退出。否则,当客户端必须等待任务完成时,您需要GearmanClient-> do方法。

2

GearmanManager只关心工人。你不会“发送”客户到后台。客户可以提交作业作为后台作业。假设这是你想要做的,而你正在使用PECL库,那么GearmanClient->doBackground()方法就是你想要的。