
正文
php分批处理数据 php分批处理数据不超时
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
Php如何分批处理数据
使用for循环
定义变量$i,配合select * from table where ………… limit $i,100
这样就可以了
我之前就做过,但因为换了工作,代码在之前的公司,否则就可以让你参考下了
另外,我觉得100太少了,最起码得改成1000才行
相关问答
Q1: php 批量数据插入数据表
if ($strleng100){
//如果大于100条就每次写入100,休息1秒,然后继续写,直到写完为止
$write_count = floor($strleng/100);
while ($write_count 0){
for ($i=0;$i100;$i++){
echo "INSERT INTO tbl_name (a,b,c) VALUES(1,2,3)";//写100次就休息
}
//echo "INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);";这样可以一次插入多条数据,效率更高
//参考
$write_count -=1 ;
sleep(1);
echo '休息1秒';
}
}
Q2: php处理大量数据时,运行到一定时间就中断了,请问如何解决
php处理数据时会有一个等待时间,就是所说的超时时间,而且如果使用mysql的话,它也有一个超时时间,运行一串代码时间如果超过配置文件的时间,会被中断不运行。第一种你可以修改php配置文件timeout的运行时间,第二你可以分批处理大量数据,注意是分批处理,就OK了。
Q3: PHP中用ajax和递归可以实现从数据库中分批取出数据么
百万级的数据库表,好像也不用这么麻烦吧?
直接写一个php,递归执行就差不多了,但是php.ini中,将memory_limit设置大一些,再将mysql.connect_timeout值加大些,max_execution_time设置的值大一些。
如果不想设置这些,在程序中使用 ini_set() 函数也是可以的,一开始先递归小一些做十几条,测试通过了再递归所有数据,然后等就行了。
在等待的过程中,你可以用phpmyadmin等工具查看实时进度,如果发现问题,重启web服务器进程,就中止运行了,然后再试。
Q4: PHP分批执行输出
异步的方式可以实现~~
如果一定要 php 程序实现的话,考虑使用 ob_flush + sleep,但是某些浏览器可能会有一些影响,跟你的文档结构也有关系,特别是有 table的情况下~
ob_start();
for($i = 0; $i 10; $i++){
echo $i, "br /";
ob_flush();
sleep(10);
}
php分批处理数据的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于php分批处理数据不超时、php分批处理数据的信息别忘了在本站进行查找喔。






