【发布时间】:2017-05-06 03:24:50
【问题描述】:
我对整个 Gearman 和 GearmanManager 周期还是很陌生。我有一个工作服务器,并且在服务器启动时验证了我的作业是否已经在我的队列(MySQL 表)中。但是,我需要能够从 PHP 中添加新作业到队列中,如果可能的话,还需要从工作人员内部添加。
现在,我将在部署新代码库时创建一份工作。这将是第一个运行的作业,其目的是为报告收集一些数据并将其存储。
这需要每小时运行一次,所以我想利用when_to_run 列。我一直在考虑 Gearman 的文档,但我仍然对应该如何将作业添加到队列中感到困惑。
我试过跑步:
<?php
$gm = new GearmanClient;
$gm->addServer();
$gm->doBackground('Metadata_Ingest_Report', '', com_create_guid());
顺便说一句,是的,我确实安装了 php-pecl-uuid。
上面的代码只是挂起,没有做任何事情。没有作业添加到数据库中,没有任何反应。
这是因为我没有完全了解如何发送作业,并且我正在尽最大努力实现 RTM,但我没有任何运气。
因此,如果您有什么可以指点我的,或者如果有人有时间解释我应该如何设置并将作业添加到 MySQL 队列以便 GearmanManager 的工作人员接听它们,那就太棒了。
编辑:看来您必须致电$gm->addServer('127.0.0.1')。根据文档,127.0.0.1 应该是默认设置,但运行 PHP 5.4.11 的情况似乎并非如此。如果我在$gm->addTask() 之后调用$gm->runTasks(),我现在可以让任务运行。我希望只需要调用$gm->addTask(),该任务就会被添加到数据库中,GearmanManager 会看到它并进行后台处理。还在挖……
最好的问候,
安德鲁
【问题讨论】: