Wenn eine bestimmte Bedingung erfüllt ist, wie kann ich die Funktion:In PHP, wie man die Funktion stoppt, wartet und rekursiv sich selbst neu startet, bis eine Bedingung erfüllt ist?
- Stopp, um den Rest der Funktion
- X Zeit warten
- Starten Sie die Funktion
Wäre es etwas sein, die Ausführung wie:
function someFunc() {
if (x == 0) {
sleep(60);
someFunc();
return;
}
...other code only to be run if above is false...
}
someFunc();
...other code only to be run if above function finishes running completely...
Falls es relevant ist und es gibt einige Bibliothek um APi-Limits oder sowas zu behandeln, mache ich dies für eine API-Verbindung. Zuerst erhalte ich einen Webhook-Hit über
file_get_contents('php://input')
, die eine URL enthält. Dann traf ich die URL mit
file_get_contents($url)
und nach $http_response_header
in eine $headers
Array Parsen, überprüfen Sie es als if ($header['api_limit'] == 0) ...
(im obigen Beispiel ist dies x
) Header. Wenn "x"
0 ist, möchte ich, dass die Funktion eine Minute wartet, bis der Grenzzyklus zurückgesetzt wird, und die zweite file_get_contents($url)
und die darauffolgende Analyse erneut ausführen.
Der Hauptgrund, warum ich damit umgehen wollte, ist, dass ich nichts aufnehmen muss. Der Webhook, den ich über file_get_contents('php://input')
erhalte, passiert nur einmal. Wenn das API-Ratenlimit erreicht wird und ich versuche, die URL im Webhook zu verwenden, aber fehlschlägt, ist die URL verloren. Also ich hatte gehofft, die Funktion würde nur X Zeit warten, bis die rte zurückgesetzt wird, bis Sie versuchen, die Webhook-empfangene URL mit file_get_contents($url)
wieder zu verwenden. Ist das irgendwie schlecht?
In Bezug auf den Aufbau einer logischen Speicher und cron Verarbeitung Skript Gegensatz? –
Das klingt grob und ein bisschen komplex, nein? Ist die Methode, die ich vorschlage, schlechtes Gedächtnis oder aus irgendeinem anderen Grund? –
Der Hauptgrund, warum ich damit umgehen wollte, ist, nichts aufzeichnen zu müssen. Der Webhook, den ich über 'file_get_contents ('php: // input') 'erhalte, passiert nur einmal. Wenn das API-Ratenlimit erreicht wird und ich versuche, die URL im Webhook zu verwenden, aber fehlschlägt, ist die URL verloren. Also hatte ich gehofft, dass die Funktion nur X-Zeit warten würde, bis die rte zurückgesetzt wird, bis ich versuche, die von webhook empfangene URL erneut mit 'file_get_contents ($ url)' zu verwenden. Ist das irgendwie schlecht? –