2016-07-28 51 views
0

Ich versuche, einen Cron-Job nach 10 Minuten zu laufen, manchmal läuft es nach 10 Minuten und manchmal läuft es nach 2 Minuten, wenn ich den Webservice anrufe. Unten ist der CodeCron Job funktioniert nicht Node-Cron

router.post('/getUser', function (req, res) { 
    var task = cron.schedule('0 */10 * * * *', function() { 
     console.log("cron job started") 
    }, false); 
    task.start(); 
}) 

Es sollte immer läuft nach 10 Minuten nicht einmal 2 Minuten gefallen, sobald der Webservice aufgerufen wird.

Antwort

1

Die Cron-Syntax besagt, dass der Befehl zu einem festen Zeitpunkt und nicht nach einem Intervall ausgeführt wird.

Die */10 Mittel, um den Befehl auszuführen, wenn die Modulo 0

In Ihrem Fall wird der Code bei jedem Tag zu jeder Stunde in der zweiten 0 von all 10 Minuten excecuted werden und so weiter.

So wird Ihr Cron zum Beispiel um 09:00, 09:10, 09:20, 09:30 und so weiter ausgeführt.

Die einzige Art, wie ich in Methoden mit Build wissen, ist so etwas wie

setTimeout(myFunc, 10 * 60 * 1000); 

Eine andere Option ist das eine feste cron auf der berechneten richtigen Zeit einzustellen nun 10 Minuten mit moment.js, wo Sie laufen Geben Sie die genaue Ausführungszeit an.

Beispiel

var moment = require('moment') 


router.post('/getUser', function (req, res) { 
var cronString = moment().second() +' '+ moment().add(10,'minutes').minute() +' '+ moment().hour() +' '+ moment().day() +' '+ moment().month() +' *'; 

var task = cron.schedule(cronString, function() { 
    console.log("cron job started") 
}, false); 
task.start(); 
}) 

Aber achten Sie auf der Tatsache, dass dies jedes Jahr zur gleichen Zeit ausgeführt werden würde;)

+0

ist es eine Möglichkeit, nach einem Intervall zu laufen? oder sollte ich setInterval JavaScript-Funktion ausführen? –

+0

Was ist die beste Option SetTimeout oder Cron Job mit der richtigen Zeit jetzt + 10? –

+0

Cronjobs werden regelmäßig ausgeführt, um Jobausführungen zu wiederholen. Die Verwendung eines Cron klingt für mich hier etwas übertrieben, aber es würde auch funktionieren. Wird in wenigen Minuten ein Beispiel hinzufügen. – Felix