Vorwort
Viele Senioren haben uns gewarnt, dass das Nachladen den reibungslosen Ablauf des gesamten Prozesses gewährleisten kann Eine vorzeitige Kündigung vor dem aktuellen Antrag ist nicht möglich. Viele Jahre lang habe ich diese Aussage nie in Frage gestellt, bis eines Tages beim Neuladen ein 502-Fehler auftrat und ich es noch einmal überdenken musste.
Wie lässt sich das Problem reproduzieren? Schreiben wir ein einfaches Skript zur Simulation:
<?php sleep(11); echo "foo"; ?>
Verwenden Sie zu diesem Zeitpunkt den Browser, um diese URL zu durchsuchen, und führen Sie dann sofort Folgendes aus Neuladevorgang. Sie können den Fehler 502 sehen.
Ist PHP so schwach? Kann ich nicht einmal garantieren, dass das Nachladen grundsätzlich reibungslos verläuft? Die Antwort ist natürlich nein, tatsächlich kann unser Ziel durch die
process_control_timeout
Parameter erreicht werden. Leider ist dieser Parameter standardmäßig auf 0 eingestellt, was bedeutet, dass er in diesem Artikel nicht auf 10 Sekunden festgelegt wird. Führen Sie die vorherigen experimentellen Schritte erneut aus. Diesmal werden die Ergebnisse normal ausgegeben. Wenn Sie jedoch noch ein paar Experimente durchführen, stellen Sie möglicherweise fest, dass der Schlaf sofort endet, wenn wir neu laden. Dies liegt daran, dass der Schlaf direkt nach dem Empfang des Signals vom Neuladen zurückkehrt:
<?php sleep(11); echo "foo"; sleep(11); echo "bar"; ?>
Führen Sie die vorherigen experimentellen Schritte erneut aus und Sie werden feststellen, dass der Fehler 502 erneut auftritt. Dies liegt daran, dass das Neuladen zwar dazu führt, dass der erste Schlaf sofort endet, der zweite Schlaf jedoch weiterhin gültig ist und das Zeitlimit von
process_control_timeout
überschreitet. Wenn wir
process_control_timeout
auf 12s setzen, dann ist alles wieder in Ordnung.
Auf diese Weise müssen wir nur einen angemessenen Wert für
process_control_timeout
festlegen, um einen reibungslosen Nachladevorgang sicherzustellen. Aber was ist ein angemessener Wert? Wenn es zu klein ist, ist es möglicherweise nicht wirksam. Wenn es zu groß ist, kann es zu Nebenwirkungen kommen? Wiederholen wir das letzte Experiment mit Fragen, aber dieses Mal fügen wir einen weiteren Monitor hinzu:
shell> watch -n1 'ps aux | grep php[-]fpm'
Der Zweck dieses Monitors besteht darin, die Änderungen des Neuladevorgangs zu beobachten in der Anzahl der PHP-FPM-Prozesse Um den Effekt deutlicher zu machen, wird empfohlen, den Startmodus von PHP-FPM in den statischen Modus zu ändern und gleichzeitig die Anzahl der Prozesse nicht zu groß zu machen.
Als wir das letzte Experiment wiederholten, stellten wir fest, dass außer dem Prozess, der die Anfrage ausführte, andere Prozesse direkt beendet wurden und der neue Prozess nicht sofort gestartet wurde und bis zum letzten alten Prozess hängen blieb Danach schließt der neue Prozess den Startvorgang ab. Wenn in diesem Zeitraum weitere Anfragen eingehen, wird diese zweifellos nicht sofort beantwortet.
Basierend auf unseren Experimenten können wir den Schluss ziehen, dass PHP-FPM standardmäßig keine reibungslose Ausführung des Neuladevorgangs garantieren kann und gleichzeitig ein angemessener
process_control_timeout
festgelegt werden muss Beachten Sie, dass der Wert nicht zu groß eingestellt werden darf, da das System sonst möglicherweise schwerwiegendere Probleme mit der Anforderungsüberlastung hat.
Zusammenfassung
Das Obige dreht sich alles um den Reload-Vorgang in PHP. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn). !

php把负数转为正整数的方法:1、使用abs()函数将负数转为正数,使用intval()函数对正数取整,转为正整数,语法“intval(abs($number))”;2、利用“~”位运算符将负数取反加一,语法“~$number + 1”。

实现方法:1、使用“sleep(延迟秒数)”语句,可延迟执行函数若干秒;2、使用“time_nanosleep(延迟秒数,延迟纳秒数)”语句,可延迟执行函数若干秒和纳秒;3、使用“time_sleep_until(time()+7)”语句。

php字符串有下标。在PHP中,下标不仅可以应用于数组和对象,还可应用于字符串,利用字符串的下标和中括号“[]”可以访问指定索引位置的字符,并对该字符进行读写,语法“字符串名[下标值]”;字符串的下标值(索引值)只能是整数类型,起始值为0。

php除以100保留两位小数的方法:1、利用“/”运算符进行除法运算,语法“数值 / 100”;2、使用“number_format(除法结果, 2)”或“sprintf("%.2f",除法结果)”语句进行四舍五入的处理值,并保留两位小数。

在php中,可以使用substr()函数来读取字符串后几个字符,只需要将该函数的第二个参数设置为负值,第三个参数省略即可;语法为“substr(字符串,-n)”,表示读取从字符串结尾处向前数第n个字符开始,直到字符串结尾的全部字符。

判断方法:1、使用“strtotime("年-月-日")”语句将给定的年月日转换为时间戳格式;2、用“date("z",时间戳)+1”语句计算指定时间戳是一年的第几天。date()返回的天数是从0开始计算的,因此真实天数需要在此基础上加1。

方法:1、用“str_replace(" ","其他字符",$str)”语句,可将nbsp符替换为其他字符;2、用“preg_replace("/(\s|\ \;||\xc2\xa0)/","其他字符",$str)”语句。

查找方法:1、用strpos(),语法“strpos("字符串值","查找子串")+1”;2、用stripos(),语法“strpos("字符串值","查找子串")+1”。因为字符串是从0开始计数的,因此两个函数获取的位置需要进行加1处理。


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

MantisBT
Mantis ist ein einfach zu implementierendes webbasiertes Tool zur Fehlerverfolgung, das die Fehlerverfolgung von Produkten unterstützen soll. Es erfordert PHP, MySQL und einen Webserver. Schauen Sie sich unsere Demo- und Hosting-Services an.

MinGW – Minimalistisches GNU für Windows
Dieses Projekt wird derzeit auf osdn.net/projects/mingw migriert. Sie können uns dort weiterhin folgen. MinGW: Eine native Windows-Portierung der GNU Compiler Collection (GCC), frei verteilbare Importbibliotheken und Header-Dateien zum Erstellen nativer Windows-Anwendungen, einschließlich Erweiterungen der MSVC-Laufzeit zur Unterstützung der C99-Funktionalität. Die gesamte MinGW-Software kann auf 64-Bit-Windows-Plattformen ausgeführt werden.

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

SublimeText3 Englische Version
Empfohlen: Win-Version, unterstützt Code-Eingabeaufforderungen!

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung