gpt4 book ai didi

php - 设置 ini max_execution_time 不起作用

转载 作者:可可西里 更新时间:2023-11-01 12:27:44 26 4
gpt4 key购买 nike

在我使用 nginx 和 php-fpm 之前,我使用的是 Apache,所以当我只想让我的一个 cron 作业不受时间执行限制地运行时,我在我的 PHP 代码中使用了这些行:

set_time_limit(0);
ini_set('max_execution_time', 0);

但是我从Apache迁移到nginx后,这段代码就失效了。我知道更改 nginx.conf 以增加最长执行时间的方法。

但我想用 php 代码处理这个问题。有办法吗?我只想指定一个可以不受时间限制地运行 PHP 代码的文件。

最佳答案

试试这个:

使用 Nginx 增加 PHP 脚本执行时间

您可以按照以下步骤增加超时值。 PHP 默认为 30 秒。 :

php.ini 的变化

如果您想将 php 脚本的最大执行时间限制从 30 秒(默认)更改为 300 秒。

vim /etc/php5/fpm/php.ini

设置...

max_execution_time = 300

在 Apache 中,将 PHP 作为上述模块运行的应用程序就足够了。但在我们的例子中,我们需要在另外 2 个地方进行此更改。

PHP-FPM 的变化

只有在您之前已经取消注释 request_terminate_timeout 参数时才需要这样做。它默认被注释,并取 php.ini 中的 max_execution_time 的值

编辑...

vim /etc/php5/fpm/pool.d/www.conf

设置...

request_terminate_timeout = 300

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;
}

如果你想增加服务器上所有站点的时间限制,你可以编辑主 nginx.conf 文件:

vim /etc/nginx/nginx.conf

在 http{..} 部分添加以下内容

http {
#...
fastcgi_read_timeout 300;
#...
}

重新加载 PHP-FPM 和 Nginx

不要忘记执行此操作,以便您所做的更改生效:

service php5-fpm reload
service nginx reload

或者试试这个

fastcgi_send_timeout 50;
fastcgi_read_timeout 50;

fastcgi 有它自己的一组超时和检查,以防止它在锁定的进程上停止。例如,如果您将 php 的执行时间限制设置为 0(无限制)然后不小心创建了一个无限循环,它们就会介入。或者,如果您正在运行除 PHP 之外的其他一些应用程序,这些应用程序没有任何自己的超时保护并且失败了。

关于php - 设置 ini max_execution_time 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22658908/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com