php循环大数据内存不足 php循环处理大量数据

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

?php

创新互联长期为成百上千客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为新会企业提供专业的成都做网站、网站设计,新会网站改版等技术服务。拥有10余年丰富建站经验和众多成功案例,为您定制开发。

mysql_connect("localhost", "mysql_user", "mysql_password") or

die("Could not connect: " . mysql_error());//连接你的数据库

mysql_select_db("mydb");//选择你的数据库

$result = mysql_query("SELECT `name` FROM data_boy WHERE `id`='2' LIMIT 0, 60");//执行SQL查询语句,搜索出60条数据

while ($row = mysql_fetch_array($result)) {

echo "姓名:".$row[name]."br";

/*补充一句,此处也可以是:

echo "姓名:".$row[0]."br";此处"mysql_fetch_array"默认返回的既有 关联数组(字段作为键名),也有数字索引数组*/

}

mysql_free_result($result);//释放结果

php foreach循环大的数据量,在其执行1个多小时后就中断了?有可能是什么原因?

一般就两种情况:

1. 超出脚本内存限制

2. 超出脚本执行时间限制

试下下面这样:

set_time_limit(0);

ini_set('memory_limit', '1000M');//自己根据实际调整

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

你用网页的方式,让人点击,服务器采集,简直是弱爆了。每个人的点击循环1000次,来个100人同时点,你要用的是普通的虚拟机就不行了。

最好是换种方式实现,不要通过网页进行采集。

可以非常简单的在数据库的表,创建一个采集队列,后台执行一个crontab的计划任务,去完成队列里的采集任务。

如何解决PHP查询大量数据内存耗尽的问题

这个问题在PHP的官方网站上叫缓冲查询和非缓冲查询(Buffered and Unbuffered queries)。PHP的查询缺省模式是缓冲模式。也就是说,查询数据结果会一次全部提取到内存里供PHP程序处理。这样给了PHP程序额外的功能,比如说,计算行数,将指针指向某一行等。更重要的是程序可以对数据集反复进行二次查询和过滤等操作。但这种缓冲查询模式的缺陷就是消耗内存,也就是用空间换速度。

相对的,另外一种PHP查询模式是非缓冲查询,数据库服务器会一条一条的返回数据,而不是一次全部返回,这样的结果就是PHP程序消耗较少的内存,但却增加了数据库服务器的压力,因为数据库会一直等待PHP来取数据,一直到数据全部取完。

很显然,缓冲查询模式适用于小数据量查询,而非缓冲查询适应于大数据量查询。


本文名称:php循环大数据内存不足 php循环处理大量数据
文章路径:http://hbruida.cn/article/ddggehg.html