如何建立一个真正的Gearman环境

时间:2012-08-20 22:08:56

标签: php gearman

Gearman让我发疯。我知道所有的教程所有的演示文稿都是如何,但我没有得到我需要的信息。

我的计划

我有一个客户端将作业发送到localhost上的一个作业服务器。在此服务器(主服务器)上运行网站和数据库。现在我有两个(后来更多的Worker-Server),我们称之为W1和W2。在这些服务器上,应该完成艰苦的工作,他们应该从安装了Gearman-Job-Server的Home-Server获取作业。作业是同步的,这意味着客户端等待任务完成。

但我不知道该怎么做。我找到的每个教程都告诉我当客户端和工作人员在同一台机器上运行时如何设置Gearman。 在Home-Server上,我安装了gearman-job-server和带有PECL的PHP​​ gearman API。 在我的客户,我用supervisord处理我打电话:

$gmc = new GearmanClient();
$gmc->addServer();

哪个应该将任务发送到本地主机作业服务器,这应该是两个免费的工作服务器之一。正确?

在Worker-Server W1和W2上的worker.php中 - 也得到了supervisord的处理 - 以下是

$gmworker= new GearmanWorker();
$gmworker->addServer('Home-Server-IP', 4730);

现在Worker-Server应该从主服务器获取任务?我是否必须在W1和W2安装gearman-job-server或者是我需要的PECL PHP Gearman API?我是否必须配置Worker-Server?

我真的希望你能向我解释这些问题,我能理解Gearman。

更多信息: 当我在Home-Server

gearmand -vvv -u root --listen=127.0.0.1

输出只是:

  • INFO启动
  • INFO收听127.0.0.1:4730(6)
  • INFO创建唤醒管道
  • INFO创建IO线程唤醒管道
  • INFO为侦听套接字添加事件(6)
  • INFO为唤醒管道添加事件
  • INFO进入主赛事循环

在最后一行之后,shell还没有做更多的事情。我甚至不能用新的命令。

更多信息。

我检查过Gearmand是否在Home-Server上运行。

ps -e|grep gearman

输出:

  • 1460? 00:00:00 gearmand

当我现在在Worker-Server上发出命令时

/usr/sbin/gearmand -u root -vvv --listen=Home-Server-IP

我得到了以下错误。

  • INFO启动
  • 致命_listen_init:bind:99
  • INFO关闭完成

我真的不知道我的应用程序出了什么问题。

1 个答案:

答案 0 :(得分:0)

您使用的是什么版本的齿轮手?错误消息的输出让我觉得它已经很老了。

为什么要尝试以root身份运行它?