wake-up-neo.net

PHP Schlafverzögerung

In PHP möchte ich jede Wiederholung der Schleife um eine zweite Verzögerung verzögern.

for ($i=0; $i <= 10; $i++) {
    $file_exists=file_exists($location.$filename);
    if($file_exists) {
        break;
    }

    //sleep for 3 seconds
}

Wie kann ich das machen?

26
Yeak

Verwenden Sie die Funktion PHP sleep(). http://php.net/manual/de/function.sleep.php Dies stoppt die Ausführung der nächsten Schleife für die angegebene Anzahl von Sekunden. Also so etwas

for ($i=0; $i <= 10; $i++) {
    $file_exists=file_exists($location.$filename);
    if($file_exists) {
        break;
    }
    sleep(3); // this should halt for 3 seconds for every loop
}
48
mavili

Ich sehe, was Sie tun ... Sie verzögern ein Skript, um ständig nach einer Datei im Dateisystem zu suchen (eine Datei, die hochgeladen wird oder von einem anderen Skript geschrieben wird). Dies ist ein schlechter Weg, um es zu tun.

  1. Ihr Skript wird langsam laufen. Der Server wird verschluckt, wenn mehrere Benutzer das Skript ausführen.
  2. Ihr Server hat für einige Benutzer möglicherweise ein Timeout.
  3. Der Zugriff auf die Festplatte ist eine kostspielige Ressource.
  4. Es gibt bessere Möglichkeiten, dies zu tun.

Sie könnten Ajax verwenden. Verwenden Sie ein Timeout, um Ihr PHP - Skript alle paar Sekunden aufzurufen. Dadurch wird das langsame Laden des Skripts vermieden. Sie können dies auch ständig tun (die aktuelle for-Schleife läuft nur 33 Sekunden lang und stoppt dann).

Sie können eine Datenbank verwenden. In einigen Fällen ist der Datenbankzugriff schneller als der Zugriff auf die Festplatte. Besonders mit Ansichten und Zwischenspeicherung. Das Skript zum Erstellen der Datei/Hochladen der Datei kann ein Flag in einer Tabelle setzen (d. H. File_exists). Anschließend können Sie ein Skript haben, das dieses Feld in Ihrer Datenbank überprüft.

13
Husman

Sie können sleep(3) verwenden, um den Thread für 3 Sekunden in den Ruhezustand zu versetzen.

Correction Schlafmethode in php sind in Sekunden .

6
devBinnooh

Hasen sind zwei Möglichkeiten, um PHP-Skripts für eine gewisse Zeit zu schlafen. Wenn Sie Ihren Code haben und das Skript für einige Zeit anhalten möchten, verwenden Sie diese Funktionen .. _ In diesen Beispielen wird t der erste Teil des Codes beim Skriptlauf und der zweite Teil des Codes) ausgeführt wird jedoch zeitverzögert ausgeführt.

  1. Mit der Funktion sleep () können Sie die Ruhezeit in Sekunden definieren.

Beispiel:

echo "Message 1";
// The first part of code.
$timeInSeconds = 3;
sleep($timeInSeconds);
// The second part of code.
echo "Message 2";

Auf diese Weise ist es möglich, das PHP-Skript für 3 Sekunden zu schlafen. Mit dieser Funktion können Sie das Skript für eine ganze Zahl (Ganzzahl) von Sekunden einschalten.

  1. Mit der Funktion usleep () können Sie die Ruhezeit in Mikrosekunden definieren. Diese Ruhezeit eignet sich für Intervalle, die eine genauere Zeit als eine Sekunde erfordern.

Beispiel:

echo "Message 1";
// The first part of code.
$timeInMicroSeconds = 2487147;
usleep($timeInMicroSeconds);
// The second part of code.
echo "Message 2";

Sie können diese Funktion verwenden, wenn Sie php für kleinere Zeitwerte als Sekunde (Float) einschalten möchten. In diesem Beispiel habe ich das Skript für 2.487147 Sekunden in den Ruhezustand versetzt.

1
Nole

Haben Sie überlegt, ein Daemon-Skript PHP mit supervisorD zu verwenden. Ich verwende es in mehreren Aufgaben, die ständig ausgeführt werden müssen. 

Der Haken dabei ist, dass Sie jedes Mal, wenn Sie Ihr Skript ausführen, nach Speicherressourcen suchen. Wenn es zu hoch ist, stoppen Sie den Prozess und lassen Sie ihn sich neu starten.

Ich habe diesen Prozess erfolgreich verwendet, um immer Datenbanksätze auf zu verarbeitende Aufgaben zu prüfen. 

Es könnte übertrieben sein, aber es ist eine Überlegung wert. 

0
davidofadelaide