Maison  >  Article  >  interface Web  >  Exemple de code NodeJs pour implémenter des tâches planifiées

Exemple de code NodeJs pour implémenter des tâches planifiées

小云云
小云云original
2017-12-06 11:01:311688parcourir

Dans le projet, il y a une fonction qui est exécutée à 0 heures tous les jours. Au départ, je voulais utiliser setInterval pour l'implémenter, mais je pense que ce besoin continuera d'exister à l'avenir. pas très évolutif. J'ai découvert le package node-schedule, donc dans cet article nous partagerons avec vous l'exemple de code pour implémenter des tâches planifiées dans NodeJs.

Enregistrez maintenant la méthode d'utilisation

node-schedule exécute toujours des méthodes spécifiques en créant un nouvel objet planningJob.

La valeur temporelle est représentée dans le tableau suivant

*  *  *  *  *  *
┬  ┬  ┬  ┬  ┬  ┬
│  │  │  │  │  |
│  │  │  │  │  └ [dayOfWeek]day of week (0 - 7) (0 or 7 is Sun)
│  │  │  │  └───── [month]month (1 - 12)
│  │  │  └────────── [date]day of month (1 - 31)
│  │  └─────────────── [hour]hour (0 - 23)
│  └──────────────────── [minute]minute (0 - 59)
└───────────────────────── [second]second (0 - 59, OPTIONAL)

Utilisez node-schedule pour exécuter la méthode à l'heure spécifiée heure

var schedule = require('node-schedule');
var date = new Date(2017, 11, 16, 16, 43, 0);

var j = schedule.scheduleJob(date, function(){
 console.log('现在时间:',new Date());
});

À 16:43:00 le 16 décembre 2017, imprimez l'heure actuelle

Spécifiez la méthode d'exécution de l'intervalle de temps

var rule = new schedule.RecurrenceRule();
rule.second = 10;
var j = schedule.scheduleJob(rule, function(){
 console.log('现在时间:',new Date());
});

Cela imprime l'heure à chaque fois que le nombre de secondes est de 10. Si vous souhaitez l'exécuter toutes les 10 secondes, définissez simplement Rule.second =[0,10,20,30,40,50].

la règle prend en charge la définition des valeurs de seconde, minute, heure, date, jour de la semaine, mois, année

De même :

Chaque L'exécution en secondes est règle.seconde =[0,1,2,3...59]
L'exécution en 0 seconde chaque minute est règle.seconde =0
L'exécution en 30 minutes par heure est règle.minute = 30;rule.second =0;
L'exécution à 0 heures tous les jours est Rule.hour =0;rule.minute =0;rule.second =0;
....
10 on le 1er de chaque mois Les points sont règle.date =1; règle.heure =10; règle.minute =0; règle.seconde =0
0 heures et 12 heures chaque semaine le 1, 3; , et 5 sont Rule.dayOfWeek =[1, 3,5];rule.hour =[0,12];rule.minute =0;rule.second =0;
....

Exemple

1 : Déterminer l'heure

Par exemple : 14 février 2014, 15h40 d'exécution

  var schedule = require("node-schedule");

  var date = new Date(2014,2,14,15,40,0);

  var j = schedule.scheduleJob(date, function(){

    console.log("执行任务");

  });

Annuler la tâche

 j.cancel();

2 : Heure fixe toutes les heures

Par exemple : 40 minutes d'exécution toutes les heures

  var rule = new schedule.RecurrenceRule();

  rule.minute = 40;

  var j = schedule.scheduleJob(rule, function(){

    console.log("执行任务");

  });

3 : Exécuté à une certaine heure certains jours de la semaine,

Par exemple : exécuté à 20h00 du lundi au dimanche

  var rule = new schedule.RecurrenceRule();

  rule.dayOfWeek = [0, new schedule.Range(1, 6)];

  rule.hour = 20;

  rule.minute = 0;

  var j = schedule.scheduleJob(rule, function(){

    console.log("执行任务");

  });

4 : Exécution par seconde Voici un exemple de code, j'espère que cela vous aidera.

Recommandations associées :

  var rule = new schedule.RecurrenceRule();

  var times = [];

  for(var i=1; i<60; i++){

    times.push(i);

  }

  rule.second = times;

  var c=0;
  var j = schedule.scheduleJob(rule, function(){
      c++;
     console.log(c);
  });

À propos du principe d'analyse des timers en JavaScript

Partage du framework de tâches planifiées PHP

Comment implémenter des tâches planifiées en PHP ?

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn