问题标签 [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 回答
1093 浏览

amazon-ec2 - 尝试在 AWS Linux EC2 上安装 gearmand,yum 找不到具有默认 repos 的必要包

我正在尝试按照本指南在运行 Amazon Linux 64 位的微型 EC2 实例上安装 gearmand:http ://planet.mysql.com/entry/?id=28654

但我遇到了一个问题

我得到以下输出:

是否有我应该添加到 yum 来安装这些软件包的存储库?如果是这样,我如何向 yum 添加存储库?

0 投票
1 回答
512 浏览

web-applications - 安全性——与客户共享 Gearman 工作 ID,不好的做法?

我正计划将 Gearman 作业服务器整合到我的网站架构中。我计划使用 gearman 完成的一项特别任务是使用我的网站进行 Facebook 身份验证。

目前,我允许用户通过 Facebook JS SDK 授权我的 Facebook 应用程序来登录我的网站,在成功验证后,我通过 AJAX 调用将用户的 access_token 发送到我的服务器,一旦服务器拥有 access_token,它就会查询 facebook Graph API获取当前用户的信息并相应地设置用户的会话。我想将 facebook API 调用推送到工作线程。

我会将作业发送给 gearman,让 gearman 返回延迟的作业 ID,将该 ID 发送回客户端的浏览器,并让浏览器以设定的时间间隔(可能 0.5 或 1.0 秒)轮询服务器以查看 API 调用是否已完成通过将作业 ID 返回到服务器并让它检查作业的完成状态。

我的问题是:与客户共享内部工作标识符是否存在任何安全风险?

0 投票
1 回答
1369 浏览

php - Gearman(使用 PHP) - 可以向所有工人发送工作/消息吗?

我是 Gearman 的新手,但我了解一般概念。我意识到这不是你通常想做的事情......但我想知道是否有办法向所有工人发送“工作”?

我有一个脚本可以监控我的工人并在他们死后重生。当我想杀死/重生所有工作进程时,我希望能够发送一份说“死”的工作。

这可能吗?谢谢!

0 投票
1 回答
3279 浏览

high-availability - HA gearman 作业服务器的最佳实践是什么

从 gearman 的主页上,他们提到运行多个作业服务器,所以如果一个作业服务器死了,客户端可以选择一个新的作业服务器。鉴于下面的陈述和图表,作业服务器似乎不相互通信。

我们的问题是那些在死掉的作业服务器中排队的作业会发生什么?为这些服务器提供高可用性以确保作业不会因故障而中断的最佳实践是什么?

您可以运行多个作业服务器,并让客户端和工作人员连接到他们配置的第一个可用作业服务器。这样,如果一个作业服务器死机,客户端和工作人员会自动故障转移到另一台作业服务器。您可能不想运行太多的作业服务器,但拥有两三个是冗余的好主意。

在此处输入图像描述

资源

0 投票
2 回答
526 浏览

mysql - 如何在不杀死数据库的情况下使用 Gearman 进行文件处理?

我目前正在设计一个处理上传文件的系统。

这些文件通过 LAMP Web 前端上传,并且必须通过几个阶段进行处理,其中一些是顺序的,另一些可能并行运行。

几个关键点:

  • 上传文件的客户端只关心安全交付文件而不是处理结果,因此它可以是完全异步的。
  • 文件大小最大为 50kb
  • 系统必须扩展到每天处理超过一百万个文件
  • 确保没有文件丢失或未处理,这一点至关重要
  • 我的假设是 MySQL,但如果 NoSQL 可以提供优势,我对 NoSQL 没有意见。

我最初的想法是让前端将文件直接放入 MySQL 数据库中,然后让许多工作进程在完成每个步骤时轮询数据库设置标志。经过一些粗略的计算,我意识到这不会扩展,因为工人轮询会开始导致上传表上的锁定问题。

经过一些研究,看起来 Gearman 可能是解决问题的方法。工作人员可以在 Gearman 服务器上注册,并且可以在不破坏数据库的情况下轮询工作。

我目前困惑的是如何以最有效的方式分配工作。我可以看到三种方法来做到这一点:

  • 编写一个调度程序来轮询数据库,然后将作业发送给 Gearman
  • 让上传过程在收到文件时触发异步 Gearman 作业
  • 插入文件时,使用 Gearman MySQL UDF 扩展使数据库启动作业

第一种方法仍然会在某种程度上打击数据库,但它可以从失败中轻松恢复。后两种方法似乎需要启用 Gearman 队列持久性以从故障中恢复,但我担心如果启用此功能,我将失去吸引我使用 Gearman 的原始速度并将 DB 瓶颈转移到下游。

任何关于这些方法中哪种方法最有效(甚至更好的现实世界示例)的建议将不胜感激。

如果您认为我以错误的方式处理整个事情,也可以随时参与。

0 投票
1 回答
765 浏览

php - 从 PHP 应用程序使用 gearman 而不安装 PHP 扩展

我有兴趣使用 Gearman 服务器在我的 PHP 应用程序中分发长时间运行的作业。不幸的是,我无法直接访问我的应用程序服务器,也无法安装任何 PECL 扩展。

有没有我可以使用的纯 PHP 客户端库?

0 投票
1 回答
944 浏览

php - 将 Net_Gearman 与 codeigniter 项目一起使用

我已经使用 Codeigniter 构建了一个应用程序,现在我想使用 Gearman 作业队列服务器来处理一些长时间运行的任务。我正在使用 Net_Gearman PEAR 库(安装模块不太理想,但不幸的是我无法在我的服务器设置上安装其他模块)。是否有任何好的教程或指南来实现将这个库与 codeigniter 集成的最佳实践方式?也许甚至是为codeigniter定制的库?谢谢!

0 投票
2 回答
315 浏览

php - 使用 PHP 和 Gearman 检测没有可用的服务器

我目前正在使用标准绑定(此处的文档)将 Gearman 与 PHP 结合使用。一切正常,但我有一个小问题,无法检测到对 GearmanClient::addServer (此处的文档)的调用何时“成功”,我的意思是......

问题是添加服务器不会尝试任何套接字 I/O,这意味着服务器可能实际上不存在或无法运行。这意味着后续代码调用(在服务器实际上不存在的情况下)失败并导致 PHP 警告

有什么方法,或者最好的方法是在添加之前或之后确认 Gearman 守护程序在服务器上运行吗?

我想实现这一点,以便我可以可靠地处理 Gearman 可能已经死亡或服务器可能无法联系的情况。

非常感谢。

0 投票
1 回答
1306 浏览

php - 通过 CLI 运行 CodeIgniter 脚本 - 缺少 CI 超级对象方法

我有一个 CodeIgniter 项目,我想通过 CLI 调用我的控制器方法之一,但是附加到 CI 超级对象的正常属性和方法似乎丢失了?

例如,运行以下在正常 http 请求期间运行良好的脚本会产生错误:

这是通过 CLI 返回的错误

我这样调用脚本: $ php index.php worker test

编辑

此外,此脚本:

回报:NULL

0 投票
1 回答
1905 浏览

php - Gearman:从后台工作人员向客户端发送数据

是否可以从后台运行的齿轮工(使用 PHP)发回数据?

我知道我可以将状态(分子/分母)传递给客户端,但我需要“返回”数据。

背景是我需要调用不同服务器上的工作人员,如果他们没有响应,主脚本应该继续。所以我认为我必须在后台运行工人。但我需要他们的一些数据。

更新: 这似乎是不可能的。我想我要么将数据存储在共享数据库中,要么将其从远程服务器写入本地服务器,或者从远程服务器读取它,或者进行如下操作: