怎样延迟php执行时间

怎样延迟php执行时间,第1张

当你在做一个抓取程序的时候,php空白了好长一段时间然后报出现如下这个错误提示:Fatal error: Maximum execution time of 30 seconds exceeded in ......很简单,意思是说脚本执行时间超过了30秒的上限。这个错误以前经常碰到,一般都是直接在页面头部加个 set_time_limit(0) 处理,今天特意将这个错误的处理方法做一下总结。经过查阅相关资料,对于PHP入门教程的学者们处理这个错误的方法基本上有三种。

(1)修改php的配置文件 php.ini 文件

找到 php.ini 这个文件,然后在这个文件中找到:max_execution_time = 30 这一行,将数字 30 设置成你想要的值,单位是秒。(也可以直接修改为:max_execution_time=0//无限制)注意这样修改完后需要重启一下服务器。

(2)使用 ini_set() 函数

对于那些不能够修改 php.ini 的朋友来说,你可以使用ini_set()这个函数来改变你的最大执行时间限制值,在程序的顶部加入如下代码:ini_set('max_execution_time','100')以上设置的为100秒,你也可以设置为0,那么就是不限制执行的时间。

(3)使用set_time_limit() 函数

在程序的顶部加入:set_time_limit(100)则表示最大执行时间设置为了100秒,当然也可以将参数设置为0,意思同上。set_time_limit 函数特别说明:void set_time_limit ( int $seconds ) 该函数的作用是设置允许脚本运行的时间,单位为秒。如果超过了此设置,脚本返回一个致命的错误。默认值为30秒,或者是在php.ini的max_execution_time被定义的值,如果此值存在。当此函数被调用时, set_time_limit()会从零开始重新启动超时计数器。换句话说,如果超时默认是30秒,在脚本运行了了25秒时调用 set_time_limit(20),那么,脚本在超时之前可运行总时间为45秒。当php运行于安全模式下时,此功能不能生效。除了关闭安全模式(在 php.ini 中将 safe_mode 设置为 off)或改变 php.ini 中的时间限制,没有别的办法。案例:如果没有打开安全模式,设置程序运行时间为25秒。例如:

12if(!ini_get('safe_mode')){

3set_time_limit(25)

4}

不太懂php,不过编程思路是相同的,如果同样代码sleep60成功,sleep600不成功,那可能就是session控制的问题吧,如果不好控制也可以考虑就用sleep60的方法运行10次,第10次执行真正的代码,不过总感觉不必这样,应该有更好的办法,我曾经在iis上做过延时定时器,用的是cache的失效回调机制触发定时执行功能,不知道php上可行不可行,实在不行了再考虑一下我说的执行10次的low办法。。。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11530960.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存