我有一个PHP应用程序,目前有5k用户,并将继续增加为可预见的未来。每周一次我运行一个脚本:我应该使用消息队列吗?
- 通过用户获取所有用户数据库
- 循环,并执行每一个一定的维修费用(包括添加新的数据库记录)
该脚本最后一次运行时,由于30秒的最大执行时间错误,它只会在死前处理1400个用户。我想到的一个解决方案是使主脚本仍然获取所有用户,但不是自己执行维护过程,而是为一个新的脚本进行一次异步cURL调用(每个用户1个),以执行维护特定用户。
我的问题在于,5k + cURL调用可能会导致服务器关闭。这是可以通过使用消息队列而不是cURL调用来解决的吗?我没有使用过的经验,但从我读过的内容看来,这可能会有所帮助。如果是这样,你会推荐哪个消息队列系统?
一些背景资料:
- 这是一个Symfony的项目,使用Doctrine作为我ORM和MySQL作为我的数据库
- 服务器是Windows机器,而我使用的是Windows的任务调度程序和wget每周自动运行一次该脚本。
任何意见和帮助,非常感谢。
当我循环遍历所有用户时,每个用户都使用单独的SQL查询保存数据库记录。这是你在'处理每个用户时提交更改'的含义吗? –