Maison > Article > développement back-end > Compréhension des paramètres PHP-FPM
process_control_timeout
Explication anglaise
process_control_timeout mixedTime limit for child processes to wait for a reaction on signals from master. Available units: s(econds), m(inutes), h(ours), or d(ays) Default Unit: seconds. Default value: 0.
Explication chinoise
process_control_timeout mixed 设置子进程接受主进程复用信号的超时时间。可用单位:s(秒),m(分),h(小时)或者 d(天)。默认单位:s(秒)。默认值:0(关闭)。
La traduction chinoise est inappropriée L'explication anglaise n'indique pas que le signal est un signal multiplexé.
Ma compréhension :
Traitement des demandes
En principe, php-fpm
choisira un processus inactif fastcgi
pour traiter la demande avant le traitement, php-fpm enverra. un signal à fastcgi pour préparer le processus fastcgi à accepter le traitement de la demande. Cependant, le processus fastcgi n'est pas toujours capable de gérer la demande, c'est-à-dire qu'il ne peut pas toujours répondre au signal (comme une animation suspendue). À ce stade, vous devez définir l'heure à laquelle php-fpm part pour le processus fastcgi. répondre au signal. S'il expire, php -fpm pensera à d'autres moyens (comme en sélectionnant d'autres processus fastcgi
), c'est le rôle du paramètre process_control_timeout
.
php-fpm
effectuer reload
process_control_timeout
= 10
<?php sleep(50);echo 1;sleep(20); //没有这个sleep,reload会立即生效echo 2;
Lorsque le navigateur accède à http://localhost
, effectuez php-fpm
smoothreload
, fastcgi Après En recevant le signal pour fermer le processus, la première fonction de veille reviendra directement, mais la deuxième fonction de veille est toujours en cours d'exécution. Par conséquent, php-fpm sera bloqué par cet ancien processus fastcgi pendant 10 secondes, après quoi il pourra effectuer un redémarrage en douceur
request_terminate_timeout
La description dans le fichier php-fpm.conf
est la suivante suit :
; The timeout for serving a single request after which the worker process will ; be killed. This option should be used when the 'max_execution_time' ini option ; does not stop script execution for some reason. A value of '0' means 'off'. ; Available units: s(econds)(default), m(inutes), h(ours), or d(ays) ; Default Value: 0 ;request_terminate_timeout = 0
La traduction est :
Le paramètre request_terminate_timeout
définit le délai d'attente pour le traitement d'une seule requête. Après cela, le processus de travail sera tué. Cette option doit être utilisée si l'option max_execution_time
dans le fichier php.ini n'arrête pas l'exécution du script pour une raison quelconque. La valeur par défaut est 0, ce qui signifie que cette option est désactivée.
Comme mentionné ci-dessus, request_terminate_timeout
définit le délai d'expiration de la requête, et max_execution_time
dans la configuration php.ini est le temps d'exécution maximum autorisé pour le script selon l'explication suivante dans le manuel. La différence entre
max_execution_time integer 这设置了脚本被解析器中止之前允许的最大执行时间,单位秒。 这有助于防止写得不好的脚本占尽服务器资源。 默认设置为 30。 从命令行运行 PHP 时,默认设置为 0。 最大执行时间不会影响系统调用和系统操作等。更多细节参见 set_time_limit()。 在 安全模式 下你不能通过 ini_set() 来修改此设置。 唯一的解决方法是关闭安全模式或者在 php.ini中修改时间限制。 你的 web 服务器也可以有其他超时设置,也有可能中断 PHP 的执行。 Apache 有一个 Timeout 指令,IIS 有一个 CGI 超时功能。 他们默认都是 300 秒。更多具体信息参见你的 web 服务器的文档。
est la suivante :
Après l'expiration du délai, request_terminate_timeout
renverra 502Bad Gateway, tandis que max_execution_time
lancera Fatal Error
.
max_execution_time n'inclut pas l'heure des appels système tels que l'utilisation de system()
, sleep()
, les opérations de flux, les opérations de base de données, etc., il est donc relativement inutile, tandis que request_terminate_timeout inclura l'heure complète de la requête de le programme.
De plus, l'activation de request_terminate_timeout n'invalidera pas max_execution_time. Celui qui atteint le premier le délai d'attente prendra effet.
Pour plus de problèmes PHP liés, veuillez visiter le site Web PHP chinois : https://www.php.cn/
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!