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

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

求一个性能优化方案!

你用网页的方式,让人点击,服务器采集,简直是弱爆了。每个人的点击循环1000次,来个100人同时点,你要用的是普通的虚拟机就不行了。
最好是换种方式实现,不要通过网页进行采集。
可以非常简单的在数据库的表,创建一个采集队列,后台执行一个crontab的计划任务,去完成队列里的采集任务。
温馨提示:内容为网友见解,仅供参考
第1个回答  2015-08-06

分页处理:

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){
        ...
    }
}

第2个回答  2013-03-24
配合 AJAX 制作。

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

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

我这有一个案例,你可以以参考下:https://www.biquts.com
第4个回答  2013-03-24
是个缓存不久好了!

php while语句出现无限循环 如何解决?
while($sc = mysql_fetch_array($result)) { echo "用户名:".$sc['username']."昵称:" .$sc['usernc']."真实姓名:".$sc['userzsname'] ."财富值:".$sc['usermoney'];} 提示说明:mysql_fetch_array() 函数的功能是:从数据库结果集中取得一行数据,并作为数组形式返回结...

PHP函数执行时间过长无响应,有什么优化的办法?
可以采用MQ,首先将task丢进Q里面,然后给出用户提示,前台页面轮询后台结果。如果数据量过大建议分批处理,拆分成多个task即可。

php实现大量数据导出方案,解决内存溢出和超时问题
在PHP中实现大量数据导出,面临的主要挑战是内存溢出和超时问题。为解决这些问题,建议使用xlswriter,这是一款性能优化的PHP库,用于生成Excel文件。可以访问xlswriter-docs.viest.me...和php.net\/manual\/ja\/book...获取官方文档和安装指南。确保在运行环境如dnmp中正确安装xlswriter。首先,删除容器和镜像...

php处理大量数据时,运行到一定时间就中断了,请问如何解决
php处理数据时会有一个等待时间,就是所说的超时时间,而且如果使用mysql的话,它也有一个超时时间,运行一串代码时间如果超过配置文件的时间,会被中断不运行。第一种你可以修改php配置文件timeout的运行时间,第二你可以分批处理大量数据,注意是分批处理,就OK了。

php批量执行sql语句怎么写?
php中利用数组用Mysql_query批量执行SQL语句。参考示例如下:思路:这里采用一个数组.用explode 函数,将$query语句按照”;”炸开,然后循环执行即可:query = 'delete from ecs_goods_attr where attr_id=11 and goods_id=22;Insert into ecs_goods_attr (goods_attr_id,goods_id,attr_id,attr_...

PHP+mysql插入上千万条数据,导致内存不足,寻求释放内存方法
我给你个思路,利用游览器的刷新机制,每执行10秒刷新一下自动更新下一串数据,一串多少数据,看你的SQL效率而定。就这样一直刷新更新,到结束为止。

php foreach循环大的数据量,在其执行1个多小时后就中断了?有可能是什...
一般就两种情况:1. 超出脚本内存限制 2. 超出脚本执行时间限制 试下下面这样:set_time_limit(0);ini_set('memory_limit', '1000M');\/\/自己根据实际调整

如何解决php进行foreach时报错Out of memory (allocated 1828978688...
这是由于数组循环占用内存超过php最大请求内存导致的,有多种解决办法。修改php.ini的参数配置,将php的内存占用空间扩大,这样就不会出现这种情况。修改源程序,现在你的程序在循环里面又调用了sort方法,我想这个方法一定有申请了大量的内存空间,你需要调整程序,尽量避免在循环中做大量操作。

php 循环如何停止,例:
恭喜恭喜,A页面做循环执行echo "";,然后跳到B页面,然后B页面又执行了A页面的echo "";建议把B页面也就是主页的内容删干净,然后从A页面跳过去看看效果,应该是没有任何输出了,然后可以确定是B页面程序调用了A页面的东西,然后去找哪里调用了 ...

php写个循环往mysql数据库插入100w条数据,每次插入几万条就自动停止了...
有两种情况, 一是 php可运行的最大时间是不是有设置. 虽然你加了set_time_limit(0). 但很有可能没设置成功,因为php有安全模式, 你可以修改php.ini 2是系统资源不够, 可能是php宕了或者 数据库宕了.

相似回答