0

我们有一个网站,上面有“项目”,每个项目都有给定数量的人订阅。

在项目“结束”时,所有订阅者都被收集和处理。在这种情况下,大约有 1,000 个订阅者的数据需要被提取和处理。还有一些相关数据与每个数据集一起存储在一个数组中。

上次我们处理大订单时,大约 300 件商品,PHP 内存不足。我们提升了内存,它能够处理它。我不认为这次会是这样。

我们目前使用拉动项目的作业来处理订阅者。在此作业中,执行 SQL 查询以提取所有“订阅者”并将它们及其相关数据存储在数组中。然后迭代该数组以创建单独的作业来处理各个订阅者。

我的问题是:

有没有办法在“块”或其他东西中做到这一点?或者有什么更好的方法可以减少对记忆的影响?如果我们有成千上万的订阅者,我希望它可以扩展。

现在这是流程:

  • 项目“结束”
  • 作业开始设置一些标志,并拉动所有订阅者
  • 循环来自 MySQL(订阅者)的数据数组,并为每个订阅者创建一个单独的作业。
  • 每个订阅者作业都由引擎处理。

我只是很难确定执行此操作的最佳过程。

4

1 回答 1

0

我会使用按 int-key 排序的主 RS,并且只处理一个订阅者。

在部分作业结束时,保存已完成作业的 ID。如果您完成与否,在最终回显时,并有一个父脚本调用它:

在进程脚本的末尾添加一个睡眠以让其他玩家进入..

 while(file_get_contents('http://yourscript.php') != false);

(不使用 include 会增加开销,但可以避免内存泄漏)

于 2013-03-20T23:05:19.493 回答