php.ini 中缺省的最长执行时间是 30 秒,这是由 php.ini 中的 max_execution_time 变量指定,倘若你有一个需要颇多时间才能完成的工作,例如要发送很多电子邮件给大量收件者,或者要进行繁重的数据抓取分析工作,服务器会在 30 秒后强行中止正在执行的程序,如何解决这个问题呢。
直接修改php.ini 中 max_execution_time 的数值;在没权限修改php.ini文件时,在 PHP 程序中加入 ini_set('max_execution_time', '0'),数值 0 表示没有执行时间的限制。
1.代码中设置
ini_set('max_execution_time',0);
ini_set('memory_limit', '2048M');
ignore_user_abort(true); // 客户端断开后,仍然继续运行
//tp还应该开启mysql的断线重连机制
//V5.0.6+版本开始,支持Mysql的断线重连机制,默认关闭,需要的话,是数据库配置文件中添加:
// 开启断线重连
'break_reconnect' => true,
2.nginx配置文件
/usr/local/nginx/conf/nginx.conf
fastcgi_connect_timeout 36000;
fastcgi_send_timeout 36000;
fastcgi_read_timeout 36000;
3.php-fpm配置文件
/usr/local/php/etc/php-fpm.conf
request_terminate_timeout = 36000
4.mysql配置文件
wait_timeout=86400
interactive_timeout = 28800