问题标签 [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 投票
1 回答
4071 浏览

php - 将多个变量传递给 Gearman 工作函数

如何将两个变量传递给同一个工作函数?例如,假设我希望连接从客户端传递的两个字符串。我在一些示例代码中看到一个正在使用的数组,但我无法让它工作。

然而,这告诉我这是一个无效的工作负载(我假设它是一个正在传递的数组)。我应该如何传递它们 - 我应该为每个创建一个任务吗?

那么如果我不能发送一个数组,我如何在worker函数中使用多个变量。我已经尝试过类似函数 String_Concat($job, $job2) 但后来我不确定如何将它们添加到工作负载()

如果我能够传递数组,这是一些示例代码:

最好的方法是什么?非常感谢!

0 投票
1 回答
4587 浏览

php - 编译的 PHP 扩展无效

我正在尝试在 Ubuntu 10.04 上安装 gearman PHP 扩展,并将 PHP 固定到 5.2,但 PHP 告诉我它不是有效的 Zend 扩展。

从源代码编译(或通过 pecl 安装)时没有错误,但在安装后,PHP 会这样说:

该模块的架构与 PHP 的架构相匹配(我在 32 位和 64 位系统上都尝试过)。据我所知,我已经安装了所有依赖项(我假设如果我错过了任何依赖项,我会收到错误 - 我一开始就这样做了)。

我使用的是 gearman 0.8.0,因为它是在 PHP 5.2 上运行的最高版本。而且我使用的是 PHP 5.2,因为我上次检查时,我们的 drupal 6 与 5.3 配合得不好(据说这已经在核心中修复,但不一定适用于模块)。

我怀疑这可能与 PHP 被固定有关,因为我找不到有关此行为的任何文档。

0 投票
1 回答
240 浏览

php - 在后台运行 PHP 脚本的最佳解决方案是什么:Gearman 或通过 shell?

我希望能够在后台运行 PHP 脚本。所以我做了一些研究,我找到了两个解决方案:

  1. 通过外壳。
  2. http://gearman.org/

我想知道哪种解决方案是最好的。

另外,我已经看到在 PHP.ini 中存在内存限制。我想知道这个限制将如何影响我的“背景”PHP 脚本,如果我需要更多内存,哪种解决方案是最好的。

更多细节:

将在后台运行的脚本将在 PHP 和 Kohana 框架的帮助下加密文件。

我正在使用 Ubuntu 11。

0 投票
1 回答
890 浏览

python - 在 python 中使用多进程模块运行多个 Gearman 进程

我想使用 python 的 multiprocessing 模块运行多个 gearman 工作进程,但似乎该进程是以顺序模式执行的。如果我在多个终端中运行单独的 worker.py 程序,那么它工作正常。但是我想减轻在很多终端中手动指定 worker.py 的负担。有没有其他选择?

0 投票
2 回答
893 浏览

gearman - 如何延迟/推迟 Gearman 的工作?

我正在使用gearman来同步不同服务器上的数据。我们有1 台主服务器,例如 10 台本地服务器。让我描述一种可能的情况。比如说,gearman 开始工作,完成了 5 个工作,同步了 5 个服务器上的数据。当开始下一个工作时,比如说,我们失去了与服务器的连接,现在它不可用。根据 gearman 的逻辑,它会一次又一次地重试。所以剩下的作业(对于服务器 7、8、9、10)将不会执行,直到第 6 个没有完成。最好的解决方案是推迟工作并将其置于队列末尾并继续工作 7-10。

如果有人知道如何做到这一点,请张贴方式。

PS:我正在使用python。

0 投票
1 回答
12411 浏览

instance - 自动启动多个新贵实例

我们使用 PHP gearman worker 并行运行各种任务。一切都很好,我有愚蠢的小 shell 脚本可以在我想要它们的时候启动它们。作为一名程序员(因此很懒惰),我想看看我是否可以通过一个新贵脚本来启动这些。

我想出了如何使用实例节,所以我可以用实例号开始它们:

这很好用,像这样开始它们:

我想使用这些工人的方式是启动一些工人(可能每个核心一个,等等),我想在启动时这样做。需要明确的是,我不需要 upstart 脚本来检测内核数量。我很高兴只说“做 8 个实例”,但这就是我想要多次运行的原因。有没有办法让我在新贵脚本中使用“start on”子句来自动执行此操作?

比如启动实例1、2、3、4?然后让他们在关机时正常退出?

我想我可以将它连接到 init.d 脚本中,但我想知道 upstart 是否可以处理这样的事情,或者是否有人已经解决了这个问题。

干杯伙计们!

0 投票
1 回答
694 浏览

php - PHP Gearman 任务有时会返回空对象

我有一个简单的 Gearman 客户端和工作人员。我都在我的 Ubuntu 桌面上运行。我已经从 synaptic 安装了 gearman-beta pecl 包和 Gearman 版本。

我的问题是,有时我会从工人那里得到一个空物体。大约 50% 的时间显示预期的文本,其余时间显示“GearmanTask Object ()”(来自客户端中的我的 print_r)

任何时候都不会发生异常,客户端始终认为工作人员已成功完成。我还应该注意,没有任何超时,客户端脚本执行得很快。

客户

工人(test.php)

我在 /var/log/gearman-job-server 中没有任何内容。

想法?

0 投票
1 回答
3521 浏览

gearman - gearman 中的错误条件和重试?

有人可以指导我在抛出异常或发生错误时如何重试 Gearman 吗?

我在 Django 应用程序中使用 python gearman 客户端,我的工作人员作为 Django 命令启动。我从这篇博客文章中读到,从错误条件中重试并不是直截了当的,它需要 sys.exit 从工作人员端。

是否已修复此问题以使用 sendFail 或 sendException 重试?gearman 也支持使用指数算法重试——比如 SMTP 失败是否在 2、4、8、16 秒后重试等?

0 投票
1 回答
1519 浏览

python - 从 gearman worker 发送失败的作业输出的最佳方法是什么?

在我的代码中,我正在尝试按照用户指定的重试次数重试 gearman 作业(运行结构命令)。对于每次尝试,我都会捕获并附加输出。在最后一次重试中,如果作业失败,我想将输出返回给客户端。

正在发生的事情是 job.send_fail() 命令简单地中断并且根本没有转到“返回输出”命令来返回失败命令的输出。

有没有更好的方法让工作失败并在退出/失败时将数据返回给客户端而不会导致工作人员死亡?

0 投票
1 回答
872 浏览

php - PHP 警告:GearmanClient::doBackground(): gearman_connection_flush:write:111

我正在尝试在我的 Mac 上使用 Vagrant 复制我们的生产设置,看看我是否可以复制我们在运行多个 Gearman 服务器时遇到的问题。

但是,我无法让“网络”虚拟机将作业发送到 Gearman 队列,而是得到主题中描述的错误。我可以在两台虚拟机之间进行 ping 操作,并且可以通过 SSH 从一台虚拟机连接到另一台,但我似乎无法在端口 4730 上建立 telnet 连接。

我已经从 CLI(使用 -vvv)启动了 Gearman 服务器,以查看是否可以看到更多内容,并且我可以看到后端实际上正在接受来自 Web VM 的连接,如下所示:

但是,它似乎没有对它接收到的连接做任何事情。有没有其他人对这个问题有任何经验,或者可以阐明什么是错误 111?

谢谢。