如何使用 php5-fpm + nginx 超时处理超时 php.ini.


How to handle timeouts with php5-fpm + nginx timeout php.ini

如何在php5-fpm + ngnix配置中使用PHP处理超时?

我试图制作一个简单的脚本

sleep(60);

PHP.ini

max_execution_time = 30

fast_cgi

fastcgi_connect_timeout 60;
fastcgi_send_timeout 50;
fastcgi_read_timeout 50;

脚本在 50 秒时停止,以表示后端超时。我该怎么做

  1. 在 PHP 中启用max_execution_time.ini

  2. 启用 ini_set 直接在脚本

为什么fast_cgi可以控制所有内容的超时而不是 php 本身?

基本上,在 Linux 上,超时只计算在实际的"php 工作"上,而不是所有流函数时间,而且不计sleep这就是为什么我从未达到限制并且 fastgci 超时总是启动。相反,在Windows上,实际的"人类"经过的时间计数。

来自 PHP 文档:

set_time_limit(( 函数和配置指令 max_execution_time只影响脚本的执行时间 本身。在执行之外发生的活动上花费的任何时间 脚本,例如使用 system(( 的系统调用、流操作、 确定最大值时不包括数据库查询等 脚本运行的时间。这在Windows上不是真的 测量时间是真实的。

尝试在 PHP 代码中使用 set_time_limit。

php-cgi(php-fpm) php 使用时.ini max_execution_time不会生效,但是FPM配置项request_terminate_timeout将处理脚本执行时间。

在 php-fpm.conf 中,像下面这样设置此项:

request_terminate_timeout = 60s