PHP Error: Maximum execution time of 30 seconds exceeded 解决方案

        在做爬虫爬取网站项目时,在for循环(10000量级)里使用curl抓取数据,但是,总是在数据量抓到三四千左右时,程序崩溃,抓不下去了,查错误日志可以看到:

于是乎。。。搜狗搜索该问题答案,终于得知该错误由PHP脚本执行时间超过30秒产生,至于为什么超过30秒?且看下面几个方面:

1. 1内存超限

        此问题是因为我不仅抓数据,还写数据进入数据库,会占用大量的缓存资源,因此mysql当缓存过多时,执行效率会下降,可能造成mysql入库等待时间过长,因此导致该错误产生,脚本不再继续执行

解决方案:在for循环里循环100次左右,执行ob_flush()函数清除缓存

关于php的几个清除缓存的相关函数也贴在这里,供大家参考:

ob_start() // 开启大小无限制的缓冲区

ob_clean() / ob_flush() // 清空/冲出 当前缓冲区

ob_get_contents() // 获取 当前缓冲区的内容

ob_end_clean() / ob_end_flush() // 清空/冲出 并关闭 当前缓冲区

1.2  执行时间过长

         可能就是你的脚本在执行某个步骤时,执行时间过长,因此报错。

解决方案:(1)在配置文件php.ini里将max_execution_time = 30 改为 =0(0代表无限制),此方法一劳永逸

                    (2)在每个脚本执行的程序开头加一句 set_time_limit(0) 即可

你可能感兴趣的:(数据库,php)