解决php网页只能执行30秒的限制
添加评论
2010年8月6日
最近我发现了一个奇怪的问题。那就是如果暂停操作已经登录了的网站后台,再次重新操作就会提示:Fatal error: Call to a member function on a non-object 然后就退出系统了。上次我明明已经解决了这个问题,为什么还会出现呢?仔细检查了一下,变量和数据库都没错。实在找不到解决方法也就一直没管他。
最近,应客户测试要求,循环插入数据库2万条注册信息。于是,用php编写了个循环插入数据库的sql语句。一开始测试插入600条数据,一切正常。接下来,我直接测试插入20000条数据。运行了一会就提示错误:Fatal error: Maximum execution time of 30 seconds exceeded。 翻译过来就是运行时间不能超过30秒。找了下资料,终于找到了解决方法。
原来是因为apache服务器默认该页最久执行时间为30秒。只要修改 php.ini 中的 max_execution_time 变量配置即可,若配置为 0 则不限定最久时间。网站放在虚拟主机中当然不能自由改了。不过,我最终还是找到了一个php函数:set_time_limit();来解决问题。括号中填写时间,0为无限制。加入该函数,终于完成了同时插入20000条数据的测试。
灵感闪现之间,把该函数加入网站的总包含文件中。测试运行,一切正常。暂停操作后继续恢复操作,正常!终于同时解决了这两个问题。原来有时候问题的出现跟本是自己解决不了的。如果不是偶然间发现该问题,恐怕我在原来那个问题上查找一个月也未必有结果。所以,程序员要多发现问题。说不定解决一个问题后,跟他相关的好多问题都迎刃而解了。
路过。。。。。www.183it.com