【发布时间】:2011-06-30 02:22:03
【问题描述】:
我有一个 PHP 应用程序,目前有 5k 用户,并且在可预见的未来会不断增加。我每周运行一次脚本:
- 从数据库中获取所有用户
- 遍历用户,并对每个用户进行一些维护(包括添加新的数据库记录)
此脚本上次运行时,由于 30 秒的最大执行时间错误,它只处理了 1400 个用户,然后死掉了。我想到的一个解决方案是让主脚本仍然获取所有用户,但不是自己执行维护过程,而是对一个执行维护的新脚本进行异步 cURL 调用(每个用户 1 个)特定用户。
我担心的是 5k+ cURL 调用可能会导致服务器宕机。这是否可以通过使用消息队列而不是 cURL 调用来解决?我没有使用过的经验,但从我所读到的内容看来,这可能会有所帮助。如果是这样,您会推荐哪种消息队列系统?
一些背景信息:
- 这是一个 Symfony 项目,使用 Doctrine 作为我的 ORM 和 MySQL 作为我的数据库
- 服务器是一台 Windows 机器,我使用 Windows 的任务调度程序和 wget 每周自动运行一次此脚本。
非常感谢任何建议和帮助。
【问题讨论】:
标签: php message-queue