Heim >Backend-Entwicklung >PHP-Tutorial >So verwenden Sie fastcgi_finish_request, um die Seitenantwortgeschwindigkeit zu verbessern
Dieser Artikel stellt hauptsächlich die Verwendung von fastcgi_finish_request zur Verbesserung der Seitenantwortgeschwindigkeit vor. Er hat einen bestimmten Referenzwert. Jetzt können Freunde in Not darauf zurückgreifen.
Wenn PHP im FastCGI-Modus ausgeführt wird , PHP FPM bietet eine Methode namens fastcgi_finish_request. Wenn eine Verarbeitung nach der Generierung der Seite möglich ist, können Sie diese Methode verwenden Das mag etwas verwirrend klingen, lassen Sie es uns anhand einiger Beispiele veranschaulichen:
<?php echo '例子:'; fastcgi_finish_request(); /* 响应完成, 关闭连接 */ /* 记录日志 */file_put_contents('log.txt', '生存还是毁灭,这是个问题.');?>
Wenn Sie über den Browser auf dieses Skript zugreifen, stellt sich heraus, dass die entsprechende Zeichenfolge nicht vorhanden ist Die entsprechende Datei wurde jedoch generiert. Dies bedeutet, dass nach dem Aufruf von fastcgi_finish_request die Client-Antwort beendet ist, das Serverskript jedoch weiterhin ausgeführt wird!
Die ordnungsgemäße Verwendung dieser Funktion kann das Benutzererlebnis erheblich verbessern:
<?php echo '例子:'; file_put_contents('log.txt', date('Y-m-d H:i:s') . " 上传视频\n", FILE_APPEND); fastcgi_finish_request(); sleep(1);file_put_contents('log.txt', date('Y-m-d H:i:s') . " 转换格式\n", FILE_APPEND); sleep(1);file_put_contents('log.txt', date('Y-m-d H:i:s') . " 提取图片\n", FILE_APPEND); ?>
Verwenden Sie den Schlaf, um etwas zeitaufwändiges zu simulieren Vorgänge im Code wurden nicht blockiert, aber die Programme wurden ausgeführt. Weitere Informationen finden Sie im Protokoll.
Abschließend möchte ich Sie daran erinnern, dass Yahoo in den Best Practices für Geschwindigkeitsüberschreitungen „Flush the Buffer Early“ erwähnt hat Up Your Web Site, das heißt, verwenden Sie die Flush-Methode in PHP, um den Inhalt so schnell wie möglich an den Client zu senden. Dies ähnelt etwas der in diesem Artikel vorgestellten fastcgi_finish_request.
Außerdem aus der Perspektive von Code-Portabilität: Sie können dem Code Folgendes hinzufügen:
if (!function_exists("fastcgi_finish_request")) { function fastcgi_finish_request() { } }
verursacht keine Probleme bei der Codebereitstellung in Nicht-FPM-Umgebungen
Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, er wird für alle hilfreich sein. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website!
Verwandte Empfehlungen:
So verwenden Sie eine Instanz vonEinführung in die Erweiterungsfunktion der Memcache-KlasseDas obige ist der detaillierte Inhalt vonSo verwenden Sie fastcgi_finish_request, um die Seitenantwortgeschwindigkeit zu verbessern. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!