Techno-magis

PHP & Crontab (Unix world only)

Mardi 3 Juin 2014

À la base, c'était une demande du boulot, sauf qu'une fois que j'avais ce que je voulais pour mon module, il y avait peu d’intérêt d'aller plus loin. Du coup, j'ai repris l'idée chez moi et j'ai essayé d'en faire un outil plus polyvalent qui ne demande même pas de connaître la syntaxe de Crontab. J'ai découpé la chose en deux parties, la gestion des lignes et du fichier d'un côté et de l'autre celui du temps. Le plus long a été de faire tous les contrôles lors du parsing d'un fichier pour s'assurer qu'il n'y a pas d'erreurs.

Cette première version a été testée avec tout ce que j'avais sous la main, il n'est pas dit que ça soit très exhaustif. En cas de problème, merci de me le reporter dans les commentaires. Je ferais bien entendu aussi des mises à jour si je rencontre moi-même des problèmes. J'ai mis les deux classes dans un seul fichier pour des raisons pratiques, vous pouvez les séparer sans problème (mais il faudra faire un include).

Télécharger la source : Exec_Cron (1.0.1)

Un petit exemple :

CODE :

include 'cron.php';
include 'crontime.php';
 
// appelle l'instance
$cron = Exec_Cron::getCron();
// pour tout écraser (si des données existe)
$cron->erase(); 
 
// nouveau temps
$time = new Exec_CronTime();
// Toutes les minutes 3 (3, 6, 9, etc.)
$time->set_every(Exec_CronTime::TYPE_MINUTES, 3);
 
// ajoute une nouvelle commande (écrit la date dans le fichier text.txt toutes les 3 minutes)
$cron->set($time, "echo `date` > /home/user/test.txt");
 
// mettre à jour Crontab
$cron->updateCrontab(); 
 
// pour avoir un rendu de ce qui est mis dans le fichier Crontab
echo "'$cron'"

Le tout est ensuite de savoir si ça marche. Il suffit de faire la commande suivant (avec les droits de l'utilisateur ou en root) :

CODE :

crontab -u www-data -l

Bien entendu, si « www-data » est l'utilisateur de PHP, mettre celui qui correspond.

Voilà des liens qui m'ont aidé et qui peuvent être utiles pour aller plus loin avec Crontab :

Édit 14/06 : j'ai trouvé un bug, j'ai mis une nouvelle version.

Catégories :
Par Zéfling, le 03/06/2014 à 00:37:41
Le billet a été lue 267 fois, avec 0 commentaire publié.
👍 0 👎 0

Aucun commentaire

Écrivez le votre ci-dessous.

Écrire un commentaire