在我使用nginx和php-fpm之前,我使用了Apache,所以当我只想运行我的一个cron作业而没有时间执行限制时,我在PHP代码中使用了这些行:
set_time_limit(0);
ini_set('max_execution_time', 0);
Run Code Online (Sandbox Code Playgroud)
但是在我从Apache迁移到nginx之后,这段代码不起作用.我知道如何改变nginx.conf以增加最长执行时间.
但我想用PHP代码处理这个问题.有办法吗?我想只指定一个可以运行PHP代码的文件,没有时间限制.
Rav*_*xan 18
试试这个:
使用Nginx增加PHP脚本执行时间
您可以按照下面给出的步骤来增加超时值.PHP默认为30秒.:
如果要将php脚本的最大执行时间限制从30秒(默认)更改为300秒.
vim /etc/php5/fpm/php.ini
Run Code Online (Sandbox Code Playgroud)
组…
max_execution_time = 300
Run Code Online (Sandbox Code Playgroud)
在Apache中,运行PHP作为上述模块的应用程序就足够了.但在我们的案例中,我们需要在另外2个地方进行此更改.
PHP-FPM的变化
只有在您之前已经取消注释了request_terminate_timeout参数时才需要这样做.它默认被注释,并获取php.ini中找到的max_execution_time的值
编辑…
vim /etc/php5/fpm/pool.d/www.conf
Run Code Online (Sandbox Code Playgroud)
组…
request_terminate_timeout = 300
Run Code Online (Sandbox Code Playgroud)
Nginx配置中的更改
增加example.com的时间限制
vim /etc/nginx/sites-available/example.com
location ~ \.php$ {
include /etc/nginx/fastcgi_params;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_read_timeout 300;
}
Run Code Online (Sandbox Code Playgroud)
如果要增加服务器上所有站点的时间限制,可以编辑主nginx.conf文件:
vim /etc/nginx/nginx.conf
Run Code Online (Sandbox Code Playgroud)
在http {..}部分添加以下内容
http {
#...
fastcgi_read_timeout 300;
#...
}
Run Code Online (Sandbox Code Playgroud)
重新加载PHP-FPM和Nginx
不要忘记这样做,以便您所做的更改将生效:
service php5-fpm reload
service nginx reload
Run Code Online (Sandbox Code Playgroud)
或试试这个
fastcgi_send_timeout 50;
fastcgi_read_timeout 50;
Run Code Online (Sandbox Code Playgroud)
fastcgi有自己的一组超时和检查,以防止它在锁定的进程中停止.如果你将php的执行时间限制设置为0(无限制)然后意外地创建了一个无限循环,他们会启动.或者,如果您运行除了PHP之外的其他一些应用程序,它们没有任何自己的超时保护而且失败了.
| 归档时间: |
|
| 查看次数: |
28295 次 |
| 最近记录: |