使用消息队列与使用 PHP 的普通 Cron 作业之间的区别

Posted

技术标签:

【中文标题】使用消息队列与使用 PHP 的普通 Cron 作业之间的区别【英文标题】:Difference between using Message Queue vs Plain Cron Jobs with PHP 【发布时间】:2012-01-25 20:18:14 【问题描述】:

我们有一个基于 php 构建的大型 Web 应用程序。此应用程序允许安排推文和墙帖,并且有预定的电子邮件从服务器发出。

“预定”是指这些 PHP 脚本预定在特定时间使用cron 运行。完成上述工作的 PHP 文件大约有 7 个。

我听说过消息队列。谁能解释消息队列是否最适合这种情况?消息队列是否执行 PHP 脚本?还是我们需要完全不同的配置?有什么优点/缺点?

【问题讨论】:

22 次浏览。任何人?有答案吗? 我也在做同样的事情。你最后做了什么? cron 作业~穷人的消息队列系统。根据网络主机和工作强度,可能会很好。 【参考方案1】:

使用Crontab 制作异步任务(与您的PHP 代码异步)是使用作业/任务队列管理器 的基本方法一个精致的,给你更多的控制,权力和可扩展性/弹性。

Crontab 很容易处理,但没有提供很多功能。它最适合计划作业而不是异步任务。

另一方面,部署任务队列(及其message broker)需要更多时间。您必须首先选择正确的工具,然后学习如何在您的 PHP 代码中实现它们。但这是 2011 年要走的路。

感谢上帝,我不使用 PHP,但在 Python 项目中使用过 Celery(加上 RabbitMQ);我相信您可以在 PHP 世界中找到类似的东西。

【讨论】:

谢谢,斯坦!消息队列是否具有侵入性。意思是,实现消息队列需要在应用程序中更改 PHP 代码? 先验它不是。 但是延迟函数的参数必须是可序列化的,有时你可能会因为一些对象没有得到很好的处理而感到惊讶。 耶。这是 2013 年,同样的规则仍然有效

以上是关于使用消息队列与使用 PHP 的普通 Cron 作业之间的区别的主要内容,如果未能解决你的问题,请参考以下文章

cron 作业或 PHP 调度程序

节点工作进程 / cron 工作建议

如何使用 PHP 创建 cron 作业?

使用控制面板在 cron 作业中运行 PHP 文件

Laravel 需要 Mcrypt PHP 扩展。不适用于 cron 作业

在 Windows 中使用 php 设置 cron 作业