Die Funktion der Funktion set_time_limit () besteht darin, die maximale Ausführungszeit von PHP -Skripten anzupassen, um übermäßige Serverressourcen aufgrund der langen Ausführungszeit des Skripts zu vermeiden. Die grundlegende Syntax ist:
<span><span><span class="hljs-title function_ invoke__">set_time_limit</span></span><span>(</span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$seconds</span></span><span>);
</span></span>
Wobei $ Sekunden die Anzahl der Sekunden zur maximalen Ausführungszeit ist. Wenn es auf 0 gesetzt ist, bedeutet dies unbegrenzte Zeit.
Zum Beispiel:
<span><span><span class="hljs-title function_ invoke__">set_time_limit</span></span><span>(</span><span><span class="hljs-number">30</span></span><span>); </span><span><span class="hljs-comment">// Erlauben Sie Skripten, höchstens auszuführen 30 Zweite</span></span><span>
</span></span>
Standardmäßig verwendet PHP normalerweise den Wert max_execution_time in der PHP -Konfigurationsdatei als maximale Ausführungszeit, wenn die Funktion set_time_limit () nicht aufgerufen wird. Dieser Wert wird im Allgemeinen auf 30 Sekunden standardmäßig standhalten.
Apache ist einer der am häufigsten verwendeten Webserver und wird normalerweise als modularer Server mit PHP verwendet. In Apache wird PHP als Modul (mod_php) ausgeführt, was bedeutet, dass die PHP -Skripte direkt im Apache -Prozess ausgeführt werden. Daher wirkt sich die Funktion set_time_limit () direkt auf die Ausführung von PHP -Skripten aus.
Standardverhalten : In der Apache -Umgebung ändert set_time_limit () die maximale Ausführungszeit des aktuellen PHP -Skripts. Wenn die Skriptausführungszeit dieses Grenze überschreitet, endet PHP automatisch das Skript und gibt einen Fehler zurück.
Aktionsbereich : set_time_limit () wirkt sich nur auf die aktuelle PHP -Anfrage aus, wirkt sich jedoch nicht auf andere gleichzeitige Anforderungen aus.
In Apache kann der PHP direkt als Modul geladen werden, die Ausführungszeit jedes PHP -Skripts direkt steuern, ohne durch andere Serverkonfigurationen oder -Seinstellungen gestört zu werden.
Nginx ist ein leichtgewichtiger Webserver, der normalerweise mit PHP-FPM (PHP FastCGI Process Manager) funktioniert. PHP kommuniziert mit Nginx über das FastCGI -Protokoll in einer Nginx -Umgebung, anstatt direkt in den Serverprozess eingebettet zu werden. Daher wird in der NGINX-Umgebung die Ausführung von PHP-Skripten durch den PHP-FPM-Prozess verwaltet.
Standardverhalten : In einer nginx -Umgebung kann sich set_time_limit () anders verhalten als Apache. Obwohl diese Funktion weiterhin die maximale Ausführungszeit des Skripts festlegen kann, kann set_time_limit () durch die Parameter max_execution_time und request_terate_time in der PHP-FPM-Konfigurationsdatei betroffen sein, da PHP durch PHP-FPM ausgeführt wird. Diese Konfigurationselemente überschreiben oder in Konflikt mit dem von set_time_limit () festgelegten Zeitlimit.
Auswirkungen der PHP-FPM-Konfiguration : Die PHP-Ausführungszeit in einer nginx-Umgebung wird nicht nur vom Parameter max_execution_time in der PHP-Konfigurationsdatei gesteuert, sondern kann auch von der Einstellung request_terminate_timeout in der PHP-FPM-Konfigurationsdatei betroffen sein. Auch wenn set_time_limit () eine längere Ausführungszeit festlegt, kann das PHP-Skript dennoch beendet werden, wenn der Wert request_terminate_timeout von PHP-FPM kurz ist.
Aktionsbereich : Da der PHP-Prozess von PHP-FPM verwaltet wird, wirkt sich set_time_limit () nur die PHP-Ausführung der aktuellen Anforderung aus und wirkt sich nicht auf andere Anforderungen von Nginx aus. Ähnlich wie bei der Apache -Umgebung wirken sich gleichzeitige Anforderungen von Nginx -Servern nicht aus.
Apache -Konfiguration : In der Apache -Umgebung hängt die Ausführungszeit von PHP nicht mit der Konfiguration von Apache zusammen und wird hauptsächlich von Php.ini und set_time_limit () gesteuert. Wenn max_execution_time in php.ini auf ein kleineres Zeitlimit eingestellt ist, kann set_time_limit () dieses Grenze effektiv überschreiben und sicherstellen, dass das Skript eine ausreichende Ausführungszeit hat.
NGINX-Konfiguration : In einer nginx-Umgebung kann der Effekt von set_time_limit () durch die relevanten Einstellungen in der Konfigurationsdatei von PHP-FPM beeinflusst werden. Insbesondere die Einstellungen von Request_terminate_timeout und max_execution_time haben eine stärkere Kontrolle über die Ausführungszeit von PHP -Skripten.
Unabhängig davon, ob es sich um Apache oder Nginx handelt, haben die Einstellungen der Funktion set_time_limit () ihre Anwendungsszenarien. Bei der Konfiguration des Servers sollten Entwickler die Skriptausführungszeit vernünftigerweise basierend auf den tatsächlichen Anforderungen konfigurieren, kombiniert mit der Ressourcensituation und der Geschäftslogik des Servers.
Apache -Tuning : Wenn Sie set_time_limit () in Apache verwenden, wird empfohlen, um sicherzustellen, dass die Einstellung max_execution_time in php.ini groß genug ist, um Konflikte mit set_time_limit () zu vermeiden. Wenn andere Apache -Module (z. B. mod_security oder mod_rewrite) die Ausführungszeit von PHP beeinflussen können, müssen Entwickler der relevanten Konfiguration besondere Aufmerksamkeit schenken.
Nginx-Tuning : In Nginx ist es sehr wichtig, die Konfiguration von PHP-FPM (wie Request_terminate_timeout ) anzupassen, insbesondere in langlebigen Skripten. Setzen Sie beispielsweise den entsprechenden Wert request_terate_timeout , um sicherzustellen, dass set_time_limit () gültig ist.
In Apache- und Nginx -Umgebungen ist die grundlegende Funktion von set_time_limit () dieselbe, die beide verwendet werden, um die maximale Ausführungszeit von PHP -Skripten zu begrenzen. Aufgrund der unterschiedlichen Serverarchitektur- und PHP -Verarbeitungsmethoden variiert jedoch auch ihre spezifische Leistung. In der Apache -Umgebung ist set_time_limit () relativ unabhängig und wirkt sich direkt auf die Skriptausführungszeit aus. In der nginx-Umgebung kann PHP durch PHP-FPM ausgeführt werden, set_time_limit () kann durch die PHP-FPM-Konfiguration beeinflusst werden, was zu unterschiedlichen Ausführungsverhaltensweisen führt.
Wenn Sie diese Unterschiede verstehen und entsprechende Konfigurationsoptimierungen basierend auf verschiedenen Serverumgebungen durchführen, können Sie sicherstellen, dass PHP-Skripte innerhalb begrenzter Zeit effizient ausgeführt werden können und die Serverressourcen durch langfristige Ausführung von Skripten vermeiden können.