mysql用php怎么分批处理插入?比如前1000条数据处理结束后,再处理1001至2000条,然后再处理2001至3000条……,直到全部处理完毕?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mysql用php怎么分批处理插入?比如前1000条数据处理结束后,再处理1001至2000条,然后再处理2001至3000条……,直到全部处理完毕?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3026字,纯文字阅读大概需要5分钟。
内容图文
![mysql用php怎么分批处理插入?比如前1000条数据处理结束后,再处理1001至2000条,然后再处理2001至3000条……,直到全部处理完毕?](/upload/InfoBanner/zyjiaocheng/202/e48553b999ce4587a80346cba78e3faf.jpg)
$q="select * from member'";$r=$obj_db->simplequery($q);while($a=$obj_db->fetchrow($r,DB_FETCHMODE_ASSOC)){ $id=$a[id]; $mccd=$a[cca]+$a[ccb]; $query="insert into mingxi (mid,mccd,mtime) values ('$id','$mccd','$time')"; $obj_db->simplequery($query);}
但当member中数据量达到百万条时,说会出现执行超时的错误:
Fatal error: Maximum execution time of 30 seconds exceeded in D:
那么怎么现实分批处理呢,比如前1000条数据处理结束后,再处理1001至2000条,然后再处理2001至3000条……,直到全部处理完毕?
$q="select * from member'";$r=$obj_db->simplequery($q);while($a=$obj_db->fetchrow($r,DB_FETCHMODE_ASSOC)){$i++;$ep=1000;//这里假设处理完第1个1000条后再处理第二个1000条,直至处理结束? $id=$a[id]; $mccd=$a[cca]+$a[ccb]; $query="insert into mingxi (mid,mccd,mtime) values ('$id','$mccd','$time')"; $obj_db->simplequery($query);}
请高手帮写出详细代码,谢谢!因代码隐藏在后台执行,所以不要考虑用分页一页一页手工去点的方式
回复讨论(解决方案)
可以用 insert into mingxi (mid,mccd,mtime) select id, cca+ccb, time from member
最近处理一些数据 大约56万条,包括每条的读取 计算 处理 和插入
使用一个ajax方法去请求PHP页面,调一个尚未被处理的进行处理,完毕后打上已处理的标记存库,返回到js, ajax接收到返回以后(可以先输出到页面上)调用自身,再次发起请求
56万条跑了大约10万秒, 页面和程序没死过
虽然很慢,但这跟我的需求(需要把每条数据进行分析处理)有关 而且不会超时什么的.
最近处理一些数据 大约56万条,包括每条的读取 计算 处理 和插入
使用一个ajax方法去请求PHP页面,调一个尚未被处理的进行处理,完毕后打上已处理的标记存库,返回到js, ajax接收到返回以后(可以先输出到页面上)调用自身,再次发起请求
56万条跑了大约10万秒, 页面和程序没死过
虽然很慢,但这跟我的需求(需要把每条数据进行分析处理)有关 而且不会超时什么的.
这种方法没法试用异步, 处理完毕的返回值有可能先行返回, 除非是查询一条然后提交一条的方式. 否则有可能会造成数据丢失.
当然如果1天跑完 你两天都没关 应该是没太大问题.
最近处理一些数据 大约56万条,包括每条的读取 计算 处理 和插入
使用一个ajax方法去请求PHP页面,调一个尚未被处理的进行处理,完毕后打上已处理的标记存库,返回到js, ajax接收到返回以后(可以先输出到页面上)调用自身,再次发起请求
56万条跑了大约10万秒, 页面和程序没死过
虽然很慢,但这跟我的需求(需要把每条数据进行分析处理)有关 而且不会超时什么的.
这种方法没法试用异步, 处理完毕的返回值有可能先行返回, 除非是查询一条然后提交一条的方式. 否则有可能会造成数据丢失.
当然如果1天跑完 你两天都没关 应该是没太大问题.
为何会先行返回? 没看明白能否举个例子说明下
$offs = isset($_GET['offs']) ? $_GET['offs'] : 1;$sql = "select * from member limit $offs, 1000";//做你该做的事header("Location: $_SERVER[PHP_SELF]?offs=" . ($offs+1000));
$offs = isset($_GET['offs']) ? $_GET['offs'] : 1;$sql = "select * from member limit $offs, 1000";//做你该做的事header("Location: $_SERVER[PHP_SELF]?offs=" . ($offs+1000));
放在哪里呢?你这个是不是等于不断刷新页面啊?页面中还有一些其它代码,这个页面只能执行一次,谢谢
同问 有解决吗
内容总结
以上是互联网集市为您收集整理的mysql用php怎么分批处理插入?比如前1000条数据处理结束后,再处理1001至2000条,然后再处理2001至3000条……,直到全部处理完毕?全部内容,希望文章能够帮你解决mysql用php怎么分批处理插入?比如前1000条数据处理结束后,再处理1001至2000条,然后再处理2001至3000条……,直到全部处理完毕?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。