Im Kurzen auszuführen: Wie Sie den Code brechen, nachdem der Code mehr als 53 Sekunden dauert, um so etwas ausführen:Wie aus der Schleife erhalten, wenn der PHP-Skript mehr als 53 Sekunden dauert
while (5 < 200)
{
// do some work here, which will take around 1-6 seconds
if (code this loop is running for more than 53 seconds)
break;
}
Wenn Sie wissen wollen, warum ich dies tun will:
Ok, das ist, was ich tue: ich bin Kopieren von Daten von 7 JSON Seiten im Web und in meine MySQL-Datenbank einfügen.
Der Code ist so etwas wie dieses:
$start_time = microtime(TRUE); // Helps to count PHP script execution time
connect to database
$number = get inserted number into database
while ($number > ($number+20))
{
7 Open JSON File link like this - "example.com/$number?api=xxxyyzz"
Use Prepared PDO statements to insert data into MySQL
}
// Code to count PHP script execution time
$end_time = microtime(TRUE);
$time_taken = $end_time - $start_time;
$time_taken = round($time_taken,5);
echo '<p>Page generated in '.$time_taken.' seconds.</p>';
Also in meinem Fall, Es dauert etwa 5,2 Sekunden eine ganze Schleife füllen Sie alle Daten hinzuzufügen. Aber einige JSON-Dateien sind leer, so dass es nur 1,4 Sekunden dauert, um eine Schleife abzuschließen, wenn sie leer sind.
So möchte ich Millionen von Schleifen (Hinzufügen von Daten aus Millionen von JSON-Dateien). Wenn mein Code also rund um die Uhr läuft, brauche ich einen Monat, um meine Aufgabe zu erledigen.
Aber nachdem der Code für 90 Sekunden läuft, bekomme ich diesen Fehler:
ich einen cron-Job bin mit der Aufgabe zu tun. Und es sieht so aus, als ob der Server den CRON-Job den gleichen Fehler gibt.
Also, ich möchte den CRON-Job machen, um alle 1 Minute zu laufen, so bekomme ich keine Zeitfehler.
Aber ich habe Angst vor dieser: Was passiert, wenn das Skript Daten in einer halben Zeilen hinzugefügt und 1 mintue bekommt über, und es keine Daten in andere Hälfte Zeilen hinzufügen. Dann nach dem Start der neuen Minute beginnt der Code von der nächsten $number
.
Also, wenn ich kann break;
aus der Schleife nach 53 Sekunden (Wenn der Code beginnt eine andere Schleife bei 52 Sekunden, dann brechen am Ende davon, das wird etwa 58-59 Sekunden sein).
Ich meine, ich werde die Pause setzen; Code kurz vor dem Schleifenende (vor }
). So verlasse ich die Schleife nicht, während die Daten in die Hälfte der Zeilen eingefügt wurden.
Ich denke, dass Sie Schlaffunktion an der Stelle der Bruchfunktion verwenden können. –
Sleep-Funktion verzögern die Code-Ausführungszeit, richtig? Wie kann es mich von Server 500 Fehler speichern? @AvinashKumarSingh Bruder? –