- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
当用 PHP 编写批处理程序时(显然,它必须被 cron-ed),使用 Gearman 和简单地存储要在 Redis 中处理的数据之间的实际区别是什么?
到目前为止,我的观察是,虽然 Gearman 能够实时推送工作,但由于 PHP 代码仅每隔一段时间运行一次,因此使用 Redis 的定期调度命令似乎或多或少是等效的。
此外,通过将 Gearman 绑定(bind)到 Gearman 库的调度生命周期,似乎使用 Gearman 给应用增加了不必要的复杂性。
综上所述,鉴于批处理器不会持续运行,是否可以假设 Gearman+PHP 与 Redis+PHP 相比没有优势?
最佳答案
Gearman 是分布式作业服务器,Redis 是分布式存储。所以这有点像比较苹果和橙子。
现在,可以使用 Redis 实现类似 Gearman 的功能(例如基于列表数据类型),但这是一种自己动手的方法。原理很简单,但细节决定成败。
最好的 Redis 分布式队列实现是针对 Ruby (Resque) 和 Python (Celery, RQ) 的。有一个用于 PHP 的 Resque 端口:
https://github.com/chrisboulton/php-resque
将 Gearman 与基于 Redis 的实现进行比较时,需要考虑重要的几点:
Gearman 作业将其完成通知客户端,可以是同步的也可以是异步的。如果您不实现特定的东西,Redis 队列将只支持没有完成通知的异步作业。
代理的高可用性。 Gearman 提出了一个现成的策略。 Redis 没有。虽然可以配置主从复制,使用Redis Sentinel,但Redis HA并不是一个简单的问题。
坚持不懈。 Gearman 支持内存队列,但也支持一些持久性后端(MySQL、Drizzle、sqlite、PostgreSQL)。 Redis 提出了各种持久性选项,但没有一个像 MySQL 或 PostgreSQL 这样的事务引擎那样可靠。
垂直可扩展性。尽管 Redis 非常高效,但它是一个单线程进程。 Gearmand 是一个多线程进程,可能可以更好地扩展(考虑到单个进程)。
实现基于 Redis 的分布式作业系统既有趣又有趣,但如果您需要快速运行的东西,Gearman 是您的最佳选择。
关于php - 编写 PHP 批处理程序时的 Gearman 与 Redis,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18273849/
有人可以指导我在出现异常时 Gearman 如何重试 抛出或发生错误时? 我在 Django 应用程序中使用 python gearman 客户端,我的工作人员是 作为 Django 命令启动。我从这
是否可以从本地系统调用远程 gearman 工作人员?我尝试使用我的远程 Azure 服务器 IP 进行调用: 本地系统上的客户端: gm_client = gearman.GearmanClient
有没有办法从 Gearman 作业服务器中删除所有 Gearman 作业?我有一个在后台运行 Gearman 作业的 PHP 应用程序。对于我的单元测试,我需要确保 a) 没有工作在等待执行它的工作人
本文实例讲述了gearman+mysql方式实现持久化操作。分享给大家供大家参考,具体如下: 1、为什么要持久化? gearman的job server中的工作队列存储在内存中,一旦服务器有未处
我只是设法在我本地的 Ubuntu 测试环境中安装了 gearman。我想知道我是否可以在开发阶段以任何方式在同一台计算机上同时运行 worker 和客户端? 最佳答案 我自己没试过;但是由于 Gea
首先,我知道 this题: Gearman: Sending data from a background worker to the client 我想知道的是,Gearman 还是这样吗?我计划将
我目前正在测试Gearman,以处理来自Web前端的并行任务/请求,Gearman cleint通过Ajax接收带有post params的请求,然后创建任务并将其发送给Gearman Worker。
我无法找到有关带有“--status”选项的 gearadmin 命令行工具含义的任何文档。工作函数名称后面的三个数字的含义是什么? 例如,然后我运行以下命令: gearadmin --status
我目前正在开发一个使用 Gearman 进行异步数据处理的系统。 我可以连接到 Gearman 服务器来检查当前的工作人员数量和各种队列的大小,这对于确定处理是否正在备份等非常有用,但我还想要一些有关
我有一些在 php 上实现的 Gearman 工作人员。这些工作人员的每个任务都应该在自己的事务中执行。为了让这些工作人员访问我的 MySQL 数据库,我需要像连接池这样的东西。您能否为此提出一些建议
我正在尝试将 gearman 用于后台任务并从 worker 获取数据进度。在文档中我看到了方法:send_job_data 和 send_job_status,但是后台优先方法不起作用(我没有在 j
我有一个简单的 python 脚本来发送 gearman 任务: 客户: # "source" is a simple tuple client = GearmanCl
我正在尝试使用 Python gearman 模块进行字符串反转的各种基本示例我的本地主机已在端口 4730 上使用 IIS 设置但是我收到错误 raise UnknownCommandError(m
我在我的项目中使用 Gearman Job 服务器。我使用 'gearman-ruby' gem 。应用程序中有一个任务队列。一项任务有 4 个部分。 适本地,我有 4 个 worker 来解决这部分
我试图理解 Gearman,但直到现在我还无法弄清楚任务和工作之间的区别。 我正在尝试创建一个客户端,它将定期(每 10 分钟)解析一个 XML 页面。哪种方法最好? 最佳答案 手册offers a
我有一个 Gearman 服务器运行一个需要几分钟才能完成的进程。我正在运行一个进度条来显示完成情况,并尝试使用 Gearman PHP 扩展和 jobStatus() 函数获取进度条的百分比。 由于
描述 正在尝试安装 laelaps/symfony-gearman-bundle通过 composer require laelaps/symfony-gearman-bundle 有一些错误,我很难
我有一个简单的 Gearman 客户端和工作器。我在我的 Ubuntu 桌面上同时运行。我已经安装了 gearman-beta pecl 软件包和来自 synaptic 的 Gearman 版本。 我
研究 PHP/Gearman。我试图了解 Gearman 服务器/进程如何确定什么构成“有效”客户端。 在我看过的文档中,文档显示了许多连接到 Gearman 服务器的客户端。但是,我没有找到任何描述
我是 Gearman 的新手。我对优化的 Gearman 用法有以下疑问: 1) 我认为 worker 期望工作是一个“字符串”。我可以将数组或哈希作为作业发送给工作人员吗?如果不是,JSON 是发送
我是一名优秀的程序员,十分优秀!