【发布时间】:2013-03-20 22:57:48
【问题描述】:
我们有一个网站,上面有“项目”,每个项目的订阅人数都给定。
在项目“结束”时,会收集并处理所有订阅者。在这种情况下,大约有 1,000 个订阅者的数据需要被提取和处理。还有一些相关数据与每个数据集一起存储在一个数组中。
上次我们处理大订单时,大约 300 件商品,PHP 内存不足。我们提升了内存,它能够处理它。我认为这次不会是这样。
我们目前使用拉动项目的作业来处理订阅者。在此作业中,执行 SQL 查询以拉取所有“订阅者”并将它们及其相关数据存储在数组中。然后迭代该数组以创建单独的作业来处理各个订阅者。
我的问题是:
有没有办法在“块”或其他东西中做到这一点?或者有什么更好的方法可以减少对记忆的影响?如果我们有成千上万的订阅者,我希望它可以扩展。
现在是这样的流程:
- 项目“结束”
- 作业开始设置一些标志,并拉动所有订阅者
- 循环来自 MySQL(订阅者)的数据数组,并为每个订阅者创建一个单独的作业。
- 每个订阅者作业都由引擎处理。
我只是很难确定执行此操作的最佳流程。
【问题讨论】:
-
时间不紧迫。
-
你需要把用户分成几部分。只需编写一个处理少量用户的脚本,将其添加到 cron 并安排它像晚上每小时一样(或者如果不需要那么长时间,则更快)。该脚本在数据库中写入,某个用户已经被处理,因此下一个查询(一个小时后)将处理下一个“数据包”用户。
标签: php cron jobs data-processing