有谁知道如何通过作业队列或并行处理在后台运行多个进程。
我有许多维护更新需要时间来运行,并希望在后台执行此操作。
我会推荐Gearman服务器,它被证明非常稳定,它完全在 Symfony2 之外,并且您必须启动并运行服务器(不知道您的托管选项是什么),但它可以完美地分配工作。在最精简的版本中,它只是将所有作业保存在内存中,但您可以将其配置为使用 sqlite 数据库作为备份,因此无论出于何种原因服务器重新启动或 gearman 守护程序中断,您都可以重新启动它,您的作业将被保留. 我知道它已经在非常大的负载下进行了测试(每秒增加 1k 个作业),并且它站稳了脚跟。现在可能更稳定了,我是根据 2 年前的经验说的,当时我们通过 Gearman 将 ZF 应用程序中的一些长期运行的任务卸载到后台处理。从下图可以看出它是如何工作的:
结帐RabbitMq。根据 knpbundles.com,这是最受欢迎的选择
看看http://github.com/mmoreram/rsqueue-bundle
使用 Redis 作为队列核心并将被维护。
看看入队库。有很多传输方式(AMQP、STOMP、AmazonSQS、Redis、Filesystem、Doctrine DBAL 等等)可供选择。易于使用且功能丰富。这对于简单的作业队列就足够了,但如果您需要更复杂的东西,请查看enqueue/job-queue。它可以运行一个独占的作业(在给定的时间只运行一个作业)或具有子作业的作业,或者完成后有事要做的作业。
当然,它有一个捆绑包