workerman/crontab

Description

workerman/crontab est un programme de tâches planifiées basé sur workerman, similaire à crontab sous Linux. workerman/crontab prend en charge la planification jusqu'au niveau de la seconde.

Utiliser workerman/crontab nécessite de définir préalablement le fuseau horaire de PHP, sinon les résultats de l'exécution pourraient différer des attentes.

Explication du temps

0   1   2   3   4   5
|   |   |   |   |   |
|   |   |   |   |   +------ jour de la semaine (0 - 6) (dimanche=0)
|   |   |   |   +------ mois (1 - 12)
|   |   |   +-------- jour du mois (1 - 31)
|   |   +---------- heure (0 - 23)
|   +------------ minute (0 - 59)
+-------------- seconde (0-59) [optionnel, si absent, la granularité minimale est la minute]

Installation

composer require workerman/crontab

Exemple

<?php
use Workerman\Worker;
require __DIR__ . '/vendor/autoload.php';

use Workerman\Crontab\Crontab;
$worker = new Worker();

// Définir le fuseau horaire pour éviter les résultats d'exécution inattendus
date_default_timezone_set('PRC');

$worker->onWorkerStart = function () {
    // Exécution chaque minute à la première seconde.
    new Crontab('1 * * * * *', function(){
        echo date('Y-m-d H:i:s')."\n";
    });
    // Exécution à 7 heures 50 chaque jour, notez ici l'omission de la seconde.
    new Crontab('50 7 * * *', function(){
        echo date('Y-m-d H:i:s')."\n";
    });
};

Worker::runAll();

Remarque : Les tâches planifiées ne s'exécutent pas immédiatement, toutes les tâches planifiées commenceront à être exécutées à la prochaine minute.

Interface

Crontab::destroy()

Détruire le minuteur

$crontab = new Crontab('1 * * * * *', function(){
    echo date('Y-m-d H:i:s')."\n";
});
$crontab->destroy();