问题标签 [gearman]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1875 浏览

php - Gearman PHP,sendComplete 没有效果

已成功将 Gearman 连接到现有 PHP 项目。使用supervisord来保证workers在运行,已经产生了相当不错的效果!

然而,我有一个关键问题,即“setCompleteCallback”根本不起作用。

拆分有点像这样:

客户

工人

(基本上引导 Zend Framework 环境,并加载 exec 函数)

最后,这里是包含所有繁重工作的 LDPE_Service_AWSConnect_Transfer_Target 类。我已经删掉了所有的逻辑,它根本没有触发。

实施方法

为了清楚起见,“transferStart/begin”和“transferStart/complete”字符串被正确打印到日志中,但是,transferComplete/begin 永远不会被触发。这是怎么回事?

谢谢!亚历克斯


似乎在后台模式下运行时回调不会触发..

0 投票
1 回答
374 浏览

gearman - 传递 return 以指定 GearmanWorker 上的回调函数的结果

我正在尝试传递一些数据或操作结果的标识符,例如“true”或“false”。目前我只能根据完成和失败的回调来考虑任务的返回码。您能否就如何将数据传递给结果提供一些想法。

0 投票
1 回答
1330 浏览

c - 在 C 中创建 Gearman Worker

我一直在尝试用他们的 C API (libgearman) 实现一个 Gearman 工作者。但是他们的 C API 文档很差而且不完整。虽然它非常类似于用其他语言(如 PHP)创建工作者,但我仍然无法通过 *gearman_worker_add_function();* 在工作者中注册函数

具体来说,我无法找出如何创建 *gearman_worker_fn* 的对象。

谢谢!

0 投票
1 回答
270 浏览

php - Versioning gearman workers

I'm converting a linear processing system to Gearman but I haven't actually deployed Gearman on a production environment.

We have a deployment chain in regards to pushing new versions of source code (Staging, Dark launches, A/B) but since Gearman workers are completely separate from the main application, how do we upgrade them ?

There are a couple of options that come to mind, none of them are perfect:

  1. Versioning the source code as normal and shutdown the environment to upgrade
  2. Versioning workers in their function registration names, ResizeFunction-v1.3
  3. Add version number into workers and attach them to jobs so that if a worker should not process it, it can quit and let another one handle it.

The Ideal scenario would allow me to handle updates of worker code without worrying that jobs from old client code will get picked up by incompatible workers, so smooth version upgrades.

I guess semantic versioning will apply here (v1.0.0 - Major.minor.patch, Major would break API compatibility, minor adds new features, and patch fixes bugs)

0 投票
2 回答
471 浏览

php - GearmanManager 在后台

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

我们找到了 brianlmoon 的 GearmanManager。它看起来正是我们所需要的,但问题是在它的代码中,我们只能找到将工作人员发送到后台的部分,而对客户端做同样的事情却一无所获。

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

0 投票
2 回答
491 浏览

php - Gearman 管理器全局变量 == NULL

我正在使用 Brian Moon 的 Gearman Manager,例如,它允许我将工人发送到后台。我面临的问题是当我想使用通过使用global关键字在函数外部定义的变量时:

此代码不会输出 200,因为变量为 NULL!?

你知道为什么要在工作函数中启用全局作用域吗?

我认为问题是齿轮管理器没有按原样包含工作文件......它正在读取它并直接进入“工作函数”,但是仍然应该有一个解决方案来访问范围之外的变量工人功能?!

0 投票
2 回答
1666 浏览

php - 具有复杂依赖关系的任务调度

我正在寻找一种调度任务的方法,其中一旦完成了几个先前的任务,任务就会开始。

我有数百个“收集器”进程,它们从各种来源收集数据并将其转储到数据库中。一旦这些完成收集(从 1 秒到几分钟不等),我想立即启动一堆“数据处理”过程来分析和理解数据库中的数据。当所有这些都完成后,我希望开始一项最终任务并向我发送一封包含摘要数据的电子邮件。

我目前正在使用 Gearman 队列并在我期望“收集器”进程完成后启动计时器上的数据处理任务,但这意味着处理步骤在 10 分钟后开始,即使收集器进程在 3 后完成(或更糟糕的是,还没有完成)。

理想情况下,我可以指定特定规则,例如“在进程 A 和(B 或 C)完成时启动进程 X”,或“在 95% 的指定进程已完成或 10 分钟过去时启动进程 Y”。

需要自动创建流程和依赖项,因为它每次都会使用不同的参数运行(即,我每次都不会进行相同的计算)。

我可以自己使用队列和监视器编写某种图形依赖框架,但这似乎必须已经解决,我正在寻找任何使用过我描述的东西的人。

0 投票
0 回答
598 浏览

php - 只有一名齿轮工在找工作

我有一个用 PHP 编写的齿轮工,它会回显一些东西并睡几秒钟。我启动了这个工人的两个实例,当我现在运行 gearman 几次来完成这项工作时,只有一个工人(我开始的最后一个)被执行——从不执行另一个,尽管客户必须等到这个工人已经完成了他的工作。我在这里做错了什么,还是齿轮人应该如何表达的想法?

然后我用命令在两个控制台中启动了worker

然后我几次运行 gearman 来完成这项工作:

是不是我需要 gearman 守护进程的 -t 选项?我正在开发 OS-X。

顺便说一句:如何更改守护进程控制进程中的任何选项?我更改了 /opt/local/etc/LaunchDaemons/org.macports.gearmand/org.macports.gearmand.plist 但我认为我需要执行一个重新读取列表的命令。

0 投票
1 回答
1207 浏览

php - gearman php 不退出且内存耗尽

当日志中显示“成功”时,我可以看到内存使用量在增长,然后出现错误:

PHP致命错误:允许的内存大小为1073741824字节已用尽(试图分配24字节)

0 投票
1 回答
1508 浏览

php - php GearmanClient 超时

我在 php 中使用 gearman pecl 扩展,并且希望函数调用超时。两个用例:(1)没有运行的工人,(2)工人需要太长时间才能完成

如果一切都在运行,则调用速度非常快,我想避免此超时产生开销。

我目前使用的代码: