我们有一个网站,上面有“项目”,每个项目都有给定数量的人订阅。
在项目“结束”时,所有订阅者都被收集和处理。在这种情况下,大约有 1,000 个订阅者的数据需要被提取和处理。还有一些相关数据与每个数据集一起存储在一个数组中。
上次我们处理大订单时,大约 300 件商品,PHP 内存不足。我们提升了内存,它能够处理它。我不认为这次会是这样。
我们目前使用拉动项目的作业来处理订阅者。在此作业中,执行 SQL 查询以提取所有“订阅者”并将它们及其相关数据存储在数组中。然后迭代该数组以创建单独的作业来处理各个订阅者。
我的问题是:
有没有办法在“块”或其他东西中做到这一点?或者有什么更好的方法可以减少对记忆的影响?如果我们有成千上万的订阅者,我希望它可以扩展。
现在这是流程:
- 项目“结束”
- 作业开始设置一些标志,并拉动所有订阅者
- 循环来自 MySQL(订阅者)的数据数组,并为每个订阅者创建一个单独的作业。
- 每个订阅者作业都由引擎处理。
我只是很难确定执行此操作的最佳过程。