1

Gearman 把我逼疯了。我知道所有的教程所有的演示文稿所有的操作方法,但我没有得到我需要的信息。

我的计划

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

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

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

哪个应该将任务发送到 localhost Job-Server,后者应该比两个免费的 Worker-Server 之一发送。正确的?

在 Worker-Server W1 和 W2 上的 worker.php 上——也可以用 supervisord 处理——下面是这样写的

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

现在 Worker-Server 应该从 Home-Server 获取任务?我必须在 W1 和 W2 安装 gearman-job-server 还是 PECL PHP Gearman API 是我需要的一切?我必须配置 Worker-Server 吗?

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

更多信息:当我在家庭服务器小费时

gearmand -vvv -u root --listen=127.0.0.1

输出只是:

  • 信息启动
  • INFO 监听 127.0.0.1:4730 (6)
  • INFO 创建唤醒管道
  • INFO 创建 IO 线程唤醒管道
  • INFO 添加监听socket事件(六)
  • INFO 为唤醒管道添加事件
  • INFO 进入主事件循环

在最后一行之后,shell 不再做任何事情。我什至不能提示一个新命令。

更多信息。

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

ps -e|grep gearman

输出:

  • 1460 ? 00:00:00 齿轮指令

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

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

我得到以下错误。

  • 信息启动
  • 致命_listen_init:绑定:99
  • INFO 关机完成

我真的没有弄明白我的申请出了什么问题。

4

1 回答 1

0

你用的是什么版本的gearman?错误消息的输出让我觉得它已经很老了。

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

于 2012-08-23T06:25:24.583 回答