2017-11-03 2 views
-2

Ziel ist es, einen Code in eine Intervallfunktion läuftJavascript setInterval-Funktion und CronJob

setInterval(function {/* do something */}, 50000) 

wenn ein cronjob alle 15 Minuten fährt test.php zur Auslösung

In meinem Code habe ich eine setInterval Funktion, in der der Code in einer Intervallzeit 50 seconds ausgeführt wird. Wenn ich meinen Code jedoch manuell auf einem localhost-Server ausführe (anstatt ihn mit einem Cron-Job auszuführen) und das Browserfenster vor dem Intervall (50 seconds) an meinem Speicherort localhost/test.php schließe, läuft die Code-In- tervallfunktion nicht !.

Wenn jedoch das Browserfenster geöffnet ist, wird der Code innerhalb des Intervalls ausgeführt. Ich frage mich, ob dies wegen localhost-Server ist und wenn ich den Code durch Einrichten eines cron-job auf einem Live-Server auslösen, dann wird der Code innerhalb Intervall-Funktion ausgeführt, trotz der Tatsache, dass kein Browser-Fenster auf einem Live-Server geöffnet ist oder Schließen, wenn der Cron-Job ausgeführt wird. Ist das wahr oder fehlt mir etwas?

+3

Erwarten Sie, dass setInterval weiter ausgeführt wird, nachdem das Browserfenster, in dem es gestartet wurde, geschlossen ist? Auch als eine Randnotiz ist setInterval ** nicht ** jQuery. – Taplar

+1

Sie können clientseitiges JavaScript nicht von cron aus ausführen. Wird Ihr Javascript für setinterval in node.js ausgeführt? –

+0

@Taplar. Nein, ich werde ein "Clearinterval" hinzufügen, um es zu stoppen ....................................... ..... @Brian Glaz. Nein, es läuft nicht in node.js. es läuft innerhalb jquery – callmejoejoe

Antwort

0

Machen Sie einen Cron-Job, der häufig, wie jede Minute, einige PHP ausführt. Der PHP kann überprüfen, ob es Zeitplan ist. Wenn dies der Fall ist, führen Sie Ihre Aufgabe aus. Wenn nicht, beende und warte, bis Cron in einer weiteren Minute einsteigt, um den Zeitplan zu überprüfen. Die Menge der Serverlast, die durch die Überprüfung eines Datums/einer Zeit einmal/Minute verursacht wird, ist minimal.

0

Wenn ich richtig verstehe, versuchen Sie, JavaScript setInterval über ein CRON mit PHP auszuführen.

setInterval ist eine JavaScript-Funktion und läuft normalerweise über einen Browser *.
Der Browser empfängt die Ausgabe des PHP-Skripts und führt dann das JavaScript aus, das mit ihm geliefert wurde.
Sobald das Browserfenster/die Registerkarte, die das Intervall erzeugt hat, geschlossen wird, wird das Intervall zerstört.

CRON, der kein Browser ist, interessiert sich überhaupt nicht für die Ausgabe des ausgeführten Skripts.
Es passiert einfach, dass JavaScript in der Ausgabe ist, aber nichts anderes passiert damit.

* Wenn Sie JavaScript auf der Server-Seite ausführen mögen Sie vielleicht lesen mögen Node.js

..also setInterval ist keine jQuery-Funktion - es ist nativer JavaScript.

+0

Gibt es eine Lösung dafür, Node.js nicht zu verwenden? Mein Ziel ist es, eine Aufgabe (Code) zu einem bestimmten Zeitpunkt auszuführen, an dem die Aufgabe geplant wurde, und ich möchte alle 15 Minuten einen Cron-Job ausführen (statt jede Sekunde oder Minuten), um die Server-CPU zu speichern einen Cron-Job jede Sekunde auszuführen, könnte den Server verlangsamen!).Ich kann zwar die Unterschiede zwischen Cron-Job und dem Schedule-Test berechnen und eine 'setInterval-Funktion' ausführen, die zu den Zeitunterschieden zwischen ihnen ausgeführt wird. Bitte lassen Sie mich wissen, ob es einen besseren und einfacheren Weg gibt, es mit php zu machen? – callmejoejoe

+0

Sie müssen einen Weg finden, um zu tun, was Ihr Javascript mit PHP tut. Es sollte möglich sein (was auch immer es ist), aber es ist schwer blind zu erraten. – Ezenhis