背景:今天在工作中需要将mysql数据库中的数据从一台服务器迁移到另一台服务器,而数据库表结构有所变化,并且不要做表的切分工作,由原来的一张表切分成32张表,在数据处理过程中,发现php脚本执行时间无法超过30s,超过后报错:500,The server encountered an internal error ormisconfiguration and was unable to completeyour request.
解决方案:
第一步:
1)在php.ini里面设置:max_execution_time =0 //没有执行时间限制;
2)通过PHP的ini_set 函数设置:ini_set("max_execution_time", 0);
3)通过set_time_limit 函数设置:set_time_limit(0);
大部分情况下通过这样的设置就可以使php的执行不受时间的限制,但如果php脚本的解析使用的是php-fpm,apache加载php-fpm模块后会有执行时间的限制,如果通过以上设置php脚本的执行时间依然受限,可以参考一下第二步:
第二部:
在Apache的配置中: etc/httpd/conf/httpd.conf 加载php-fpm模块添加时间限制 -idle-timeout
#fastcgi_module
<IfModule fastcgi_module>
FastCGIExternalServer /var/fcgi-bin/php-fpm -idle-timeout 360000 -host 127.0.0.1:9000
</IfModule>
对于配置文件的修改需要重启apache,重新加载php-fpm;
第二步参考:http://www.fastcgi.com/mod_fastcgi/docs/mod_fastcgi.html#FastCgiExternalServer
Edit by Clark
@2014-6-10