Frage

Ich habe zwei Fragen nach der sleep() Funktion in PHP:

  1. Ist die Ruhezeit die maximale Ausführungszeit meiner PHP-Skripte beeinflussen? Manchmal zeigt PHP die Meldung „maximale Ausführungszeit von 30 Sekunden überschritten“. Diese Meldung erscheint, wenn ich sleep(31) verwenden?

  2. Gibt es irgendwelche Risiken bei der sleep()function mit? Ist es viel CPU-Leistung kosten?

War es hilfreich?

Lösung

Sie sollten es versuchen, nur ein Skript, das für mehr als die maximale Ausführungszeit schläft.

<?php
  sleep(ini_get('max_execution_time') + 10);
?>

Spoiler: Unter Linux schläft Zeit ignoriert, aber unter Windows, es zählt als Ausführungszeit.

Andere Tipps

Es wirkt sich nur Skript Zeit nicht System wie Schlaf () aufruft. Es ist offensichtlich ein Fehler, der auf Windows-sleep () enthalten ist. Max Ausführungszeit ist etwa in Echtzeit, keine CPU-Zeit oder so etwas. Sie können es jedoch ändern:

  • max_execution_time Richtlinie in Ihrem php.ini. Dies ist eine globale Einstellung;
  • Verwenden von ini_set () mit der genannten Richtlinie. Dadurch wird es nur nur für das aktuell ausgeführten Skripts ändern für die Ausführung;
  • set_time_limit () . Auch eine lokale Änderung

Wie für die Differenz zwischen den beiden letzten, glaube ich max_execution_time ist eine feste Größe. Laufen:

ini_set('max_execution_time', 60);

wird auf 60 Sekunden, um das Skript zu begrenzen. Wenn nach 20 Sekunden Sie rufen:

set_time_limit(60);

Das Skript wird nun auf 20 + 60 = 80 Sekunden begrenzt werden.

Von dem PHP sleep () , gibt es diese benutzer beigetragen Anmerkung:

  

Hinweis: Die Funktion set_time_limit ()   und die Konfigurationsdirektive   max_execution_time wirken sich nur auf die   Ausführungszeit des Skripts selbst.   Jedes Mal, auf der Aktivität ausgegeben, die   geschieht außerhalb der Ausführung der   Skript wie Systemaufrufe mit   System (), der Schlaf () Funktion,   Datenbankabfragen etc. sind nicht inbegriffen   bei der Bestimmung der maximale Zeit, die   Das Skript wurde ausgeführt wird.

Andere haben bereits abgedeckt, die Grundlagen des Schlafes () und PHP-Skript Ausführungszeit, aber Sie sollen auch ein anderes Risiko bewusst sein, wenn wirklich lange Schlafperioden verwendet wird.

Normalerweise, wenn ein Browser eine Anforderung an einen Server sendet und empfängt keine Daten vom Server kann die Verbindung Timeout. Diese Frist ist abhängig von der Konfiguration des Browsers, aber ich habe gelesen, dass IE7 einen Standardwert von nur 30 Sekunden hat, während Firefox hat einen Standardwert von 115 Sekunden --Sie kann Ihre eigene Konfiguration in Firefox überprüfen, indem Sie auf about: config und Filterung für Netzwerk .http.keep-alive.timeout (die Frist wird in Sekunden angegeben).

Edit: Ich hatte die Einheiten für network.http.keep-alive.timeout und browser.urlbar.search.timeout gemischt. Es ist in der Tat in Sekunden, nicht Zehntelsekunden.

a) Ja, es zählt zu dem Zeitlimit (so schlafen (31) einen Fehler auslösen)

b) Es tut das Gegenteil CPU-Leistung der Kalkulation - es andere Anwendungen nutzen läßt die CPU (wenn eine Anwendung schläft, wird die CPU-Auslastung dieser Anwendung in der Nähe von 0%). Abgesehen von der Zeit vom Benutzer weg nehmen, kann ich nicht wirklich, dass keine Risiken von diesem.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top