PHP Error: Maximum execution time of 30 seconds exceeded 解决方案 - Go语言中文社区

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) 即可

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/longjialin93528/article/details/81540408
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-06-27 23:44:33
  • 阅读 ( 1215 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢