繁体   English   中英

使用php中的作业处理大量数据

[英]Processing a large amount of data using jobs in php

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

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

上一次我们处理约300个大订单时,PHP的内存不足。 我们增加了内存,它能够处理它。 我认为这次不是那样。

我们当前使用的工作会拉动项目来处理订户。 在此作业中,将执行SQL查询以提取所有“订户”并将其及其相关数据存储在数组中。 然后遍历该阵列以创建单个作业以处理单个订户。

我的问题是:

有办法做到这一点吗? 还是有任何更好的方法可以减少对内存的影响? 如果我们有成千上万的订户,我希望它可以扩展。

现在,这是流程:

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

我很难确定最好的方法来做到这一点。

我会使用按int键排序的主RS,并且只处理一个订户。

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

在过程脚本结尾添加一个usleep,以允许其他玩家进入。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM