我们有一个网站上有“项目”,每个项目都有一定数量的人订阅。
在项目的“结尾”,所有订阅者都被收集和处理。在这种情况下,大约有1,000个订户需要提取和处理其数据。还有一些与数据集一起存储在数组中的相关数据。
我们最后一次处理大订单,约300项,PHP内存不足。我们提高了内存,并且能够处理它。我不认为这次会是这种情况。
我们目前使用拉动项目来处理订阅者的作业。在这项工作中,执行SQL查询以拉动所有“订户”并将它们及其相关数据存储在数组中。然后迭代该数组以创建单个作业以处理各个订户。
我的问题是:
有没有办法在“块”或其他东西中执行此操作?或者更好的方法可以减轻对记忆的影响?如果我们有数千名订阅者,我希望这是可扩展的。
现在这是流程:
我很难确定最佳流程来实现这一目标。
答案 0 :(得分:0)
我使用主要的RS排序在prefeerably int-key, 并且只处理一个订阅者。
在部分作业结束时,保存已完成作业的ID。如果完成与否,最后的回声, 并有一个父脚本调用它:
在processscript结尾添加一个usleep,让其他玩家进入..
while(file_get_contents('http://yourscript.php') != false);
(不使用include会增加开销,但可以避免内存泄漏)