Heim >Backend-Entwicklung >PHP-Tutorial >Verständnis der PHP-FPM-Parameter
process_control_timeout
Englische Erklärung
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.
Chinesische Erklärung
process_control_timeout mixed 设置子进程接受主进程复用信号的超时时间。可用单位:s(秒),m(分),h(小时)或者 d(天)。默认单位:s(秒)。默认值:0(关闭)。
Die chinesische Übersetzung ist unangemessen. Die englische Erklärung weist nicht darauf hin, dass es sich bei dem Signal um ein Multiplex-Signal handelt.
Mein Verständnis:
Verarbeitung von Anfragen
Im Prinzip wählt php-fpm
einen inaktiven fastcgi
Prozess aus, um die Anfrage zu verarbeiten, bevor sie verarbeitet wird ein Signal an fastcgi, um den fastcgi-Prozess auf die Annahme der Anforderungsverarbeitung vorzubereiten. Der Fastcgi-Prozess ist jedoch nicht immer in der Lage, die Anforderung zu verarbeiten, d Wenn das Signal abläuft, überlegt sich php -fpm andere Möglichkeiten (z. B. die Auswahl anderer fastcgi
-Prozesse). Dies ist die Rolle des process_control_timeout
-Parameters.
php-fpm
perform reload
process_control_timeout
= 10
<?php sleep(50);echo 1;sleep(20); //没有这个sleep,reload会立即生效echo 2;
Wenn der Browser auf http://localhost
zugreift, führen Sie php-fpm
smoothreload
aus, fastcgi Danach Nach Erhalt des Signals zum Schließen des Prozesses kehrt die erste Schlaffunktion direkt zurück, die zweite Schlaffunktion wird jedoch noch ausgeführt. Daher bleibt php-fpm 10 Sekunden lang bei diesem alten Fastcgi-Prozess hängen, danach kann ein reibungsloser Neustart durchgeführt werden.
request_terminate_timeout
Die Beschreibung in der php-fpm.conf
-Datei lautet wie folgt folgt:
; 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
Übersetzung ist:
Der Parameter request_terminate_timeout
legt den Timeout für die Verarbeitung einer einzelnen Anfrage fest. Danach wird der Worker-Prozess beendet. Diese Option sollte verwendet werden, wenn die Option max_execution_time
in der Datei php.ini die Ausführung des Skripts aus irgendeinem Grund nicht stoppt. Der Standardwert ist 0, was bedeutet, dass diese Option deaktiviert ist.
Wie oben erwähnt, legt request_terminate_timeout
das Timeout der Anfrage fest, und max_execution_time
in der php.ini-Konfiguration ist die maximal zulässige Ausführungszeit für das Skript gemäß der Erklärung unten im Handbuch. Der Unterschied zwischen
max_execution_time integer 这设置了脚本被解析器中止之前允许的最大执行时间,单位秒。 这有助于防止写得不好的脚本占尽服务器资源。 默认设置为 30。 从命令行运行 PHP 时,默认设置为 0。 最大执行时间不会影响系统调用和系统操作等。更多细节参见 set_time_limit()。 在 安全模式 下你不能通过 ini_set() 来修改此设置。 唯一的解决方法是关闭安全模式或者在 php.ini中修改时间限制。 你的 web 服务器也可以有其他超时设置,也有可能中断 PHP 的执行。 Apache 有一个 Timeout 指令,IIS 有一个 CGI 超时功能。 他们默认都是 300 秒。更多具体信息参见你的 web 服务器的文档。
ist wie folgt:
Nach einer Zeitüberschreitung gibt request_terminate_timeout
502Bad Gateway zurück, während max_execution_time
Fatal Error
auslöst.
max_execution_time beinhaltet nicht die Zeit für Systemaufrufe wie die Verwendung von system()
, sleep()
, Stream-Operationen, Datenbankoperationen usw., daher ist es relativ nutzlos, während request_terminate_timeout die vollständige Anforderungszeit von enthält das Programm.
Außerdem wird durch das Einschalten von request_terminate_timeout max_execution_time nicht ungültig. Wer zuerst das Timeout erreicht, wird wirksam.
Weitere verwandte PHP-Probleme finden Sie auf der chinesischen PHP-Website: https://www.php.cn/
Das obige ist der detaillierte Inhalt vonVerständnis der PHP-FPM-Parameter. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!