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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php foreach循环大的数据量,在其执行1个多小时后就中断了?有可能是啥原因?相关的知识,希望对你有一定的参考价值。

ini_set("max_execution_time",0);设置执行时间
Ignore_User_Abort(True);关闭浏览器后继续运行

一般就两种情况:
1. 超出脚本内存限制
2. 超出脚本执行时间限制

试下下面这样:
set_time_limit(0);
ini_set('memory_limit', '1000M');//自己根据实际调整追问

现在想到的唯一可能就是IIS应用程序池回收时间 太长,应用程序池满了,php有什么方法可以解决吗?

参考技术A 循环中操作什么?追问

我简单说一下,我数据库里有大量关键字(关键字表),然后foreach关键字,每个关键字要在百度上匹配50条记录,然后库里有(白名单,黑名单表)然后将50条记录与这两张表比对,不在黑名单,且在白名单的记录,插入数据库的一张表里。现在有2000多个关键字,现在的循环最少在100000次以上。每次执行3,400个关键字(时间在1:40分钟左右)就会停下来。大概就是这么个样子。

追答

和另一位说的一样,可能超出了脚本的最大内存限制。

jQuery Ajax $.post 传给php里面有foreach循环,最后拿到的数据循环只执行一次。怎么解决?

$.post(":url('Zonghe/do_more')",
'user_name': username,
'password': password,
'code': code
, function (data)
$("#KuanJiao").replaceWith(data);
alert(data);
);

参考技术A 最后拿到的数据循环只执行一次
是什么意思
php返回的是几维数组追问

我知道了,Ajax post传字符串的时候,把回车符的"\r\n",转换成了"\n"。结果导致我的正则表达式没有匹配到回车。
有什么方法可以避免这个问题?不会把回车符的"\r\n",转换成了"\n"

追答

把那个一位数返回成json合适,js端接收到在处理ja端循环

以上是关于php foreach循环大的数据量,在其执行1个多小时后就中断了?有可能是啥原因?的主要内容,如果未能解决你的问题,请参考以下文章

PHP中使用foreach循环读取数组数据的方法

未定义的偏移量甚至将 foreach 循环提交到数据库

在 foreach 循环中调用存储过程 - 仅第一次执行

我在 PHP 中有 2 个日期,我怎样才能运行一个 foreach 循环来度过所有这些日子?

php while循环和foreach循环 mysql_fetch_array()

php foreach数组问题