2016-04-18 6 views
1

Nach ein paar Recherchen habe ich keine Antworten für das gefunden, was ich erreichen möchte. Ich habe einige Informationen über die PHP-Funktion sleep() und einige Informationen über CRON-Jobs gefunden, aber keine dieser Optionen scheint das Problem zu lösen.Warten Sie nach Erhalt eines Webhook

Hier ist, was ich versuche zu tun: Ich habe eine PHP-Datei, die Webhooks erhalten kann. Ich muss einige Zeit (15 Minuten zum Beispiel) warten, bevor ich auf diesen Webhook "reagiere". Also, im Grunde mein Skript soll: 1 - erhält die Webhook (bereits mit aktuellem Code getan) 2 - einige Zeit warten 3 - einige Aktionen ausführen (bereits geschehen)

Ich habe bereits getan, was ich brauchte, ohne das warten Teil, und es funktioniert sehr gut, bu jetzt weiß ich nicht, wie damit zu tun ...

Wenn ich es gut verstanden habe, werden Cron Jobs regelmäßig ausgeführt, während ich nur einige Zeit warten möchte, wenn Der Webhook wird empfangen. Ich dachte über die Funktion sleep() nach, aber ich befürchte, dass es zu viele Ressourcen benötigt ...

Wie kann ich das tun?

Update: Es scheint, dass ich nicht die Schlaffunktion mehr als 30 Sekunden

+0

Ich denke, dass die Schlaf-Funktion tatsächlich das ist, was Sie brauchen –

+0

Danke. Aber bitte beachten Sie mein Update: Wenn ich einen Wert über 30 Sekunden verwende, wird das Ende des Skripts nie ausgeführt ... –

+0

Sie können auch die time() -Funktion verwenden, um die Zeit zu speichern, die Sie Ihren Webhook erhalten haben. dann benutze sowas wie while (time()

Antwort

1

Wenn ich Sie wäre, würde ich ein Warteschlangensystem erstellen, so dass wenn ein Webhook hereinkommt, eine Zeile in einer Datenbank eingefügt wird. Ich würde eine Spalte für 'execution_time' hinzufügen und diese auf 15 Minuten ab dem Zeitpunkt setzen, an dem der Webhook kam. Sie können dann einen Cron-Job einrichten, der jede Minute ausgeführt wird, aber nur dort auslöst, wo die Ausführungszeit 'jetzt' ist.

+0

Vielen Dank für Ihre Antwort. Könntest du bitte ein bisschen mehr erklären, wie du das machen würdest? Vor allem der Cron-Job Teil ... (Ich meine, es jede Minute laufen wird eine Menge Ressourcen verwenden, nicht wahr?) Wie auch immer, es scheint die beste Option zu sein ... –

+0

Es wird nichts in der Nähe verwenden die Ressourcen, die mehrere Instanzen desselben Skripts jeweils 15 Minuten vor der Ausführung im Speicher halten. Laufende Cron-Jobs jede Minute ist sehr normal. Ich kann keine Erklärung mehr geben, ohne zu wissen, was Ihr Webhook tut. – H2ONOCK

+0

Ok, das muss ich hören (naja, um Fakten zu lesen ...).Ich werde es so schnell wie möglich versuchen, vielen Dank! –

0

Gebrauch verwenden können cron

(max Ausführungszeit ich denke?) „Bei jeder 15. Minute nach jeder vollen Stunde.“

Minute Hour Day Month Weekday Command 

15  *  * *  *  php /homelink/path/filename.php 

Hinweis:

Sie können ein set E-Mail-Adresse für den Cron. Jedem Auslöser wird eine E-Mail-Benachrichtigung gesendet. Wenn E-Mail empfangen bedeutet, Cron funktioniert, wenn nicht, dann müssen Sie Ihren Code überprüfen. Sie können auch mit den entsprechenden Echos debuggen.

+0

Danke für die Antwort, aber wird es nicht jede Stunde ausgeführt, auch wenn kein Webhook empfangen wird? Und was ist, wenn ich 1 Minute vor der geplanten Zeit einen Webhook bekomme? –