求 php 循环执行大量数据 解决办法。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求 php 循环执行大量数据 解决办法。相关的知识,希望对你有一定的参考价值。

用for循环的时候 从1循环到100万 都很快
现在关键是 不是这么简单的 1-100万循环
是每次循环 都需要请求一个 url 来采集 上面的内容。
最小循环是500-1000次
最大的循环是5000-10000次
循环的时候 又不是一个人循环 有可能是 100个人 同时点击 循环采集。

求一个性能优化方案!

你用网页的方式,让人点击,服务器采集,简直是弱爆了。每个人的点击循环1000次,来个100人同时点,你要用的是普通的虚拟机就不行了。
最好是换种方式实现,不要通过网页进行采集。
可以非常简单的在数据库的表,创建一个采集队列,后台执行一个crontab的计划任务,去完成队列里的采集任务。
参考技术A

分页处理:

1.如果是查询的数据库 那么就加 limit

2.如果是数组,就采用数组分页;

    参考

$page = (int)$_GET['page'];
$page = $page?$page :1;
$limit = 100;
$count = count($excelData);
if ($page*$limit >$count) 
    exit('执行完成');

$excelData = array_slice($excelData, ($page-1)*$limit ,100);

if($excelData)
    foreach($excelData as $k=>$v)
        ...
    

参考技术B 配合 AJAX 制作。

php 每次请求只采集一个 URL
在浏览器那边用 JS 循环。

反正你采集这么多数据,用户也要等半天。不如用 AJAX 采集到一条看一条。
这样一来,顶多就是像聊天室刷数据。。服务器表示鸭梨不大。。
参考技术C 你这是做小说采集的吧?
现在好像很多这种站,原理都大同小异。

我这有一个案例,你可以以参考下:https://www.biquts.com
参考技术D 是个缓存不久好了!

以上是关于求 php 循环执行大量数据 解决办法。的主要内容,如果未能解决你的问题,请参考以下文章

如何解决PHP里大量数据循环时内存耗尽的问题

如何解决PHP里大量数据循环时内存耗尽的问题

JAVA程序占CPU100%,求解决办法!

php 循环遍历Yii2中的大量数据库行

nginx+php产生大量TIME_WAIT连接解决办法

PHP 用PHPExcel往数据库导入大量数据