J'ai un serveur http sous Linux.
J'ai un code PHP qui stocke des variables dans le cache à l'aide de memcache et j'aimerais que ce code soit exécuté toutes les 500 millisecondes lorsque le serveur est en cours d'exécution, même après un redémarrage du serveur.
Je pensais mettre en place un service mais je n'ai pas beaucoup d'expérience avec Linux donc je ne sais pas comment faire ou si c'est même la bonne approche.
J'ai également entendu parler des cron-jobs, mais je constate qu'ils fonctionnent par minutes et non par secondes.
Comment exécuter un code PHP sous Linux toutes les 500 millisecondes (un code serait utile) ?
Réponses
Trop de publicités?Vous pouvez utiliser un simple Shell-Shell pour cela :
#!/bin/bash
while true; do
php /path/to/your/script.php & sleep 0.5s;
done
Le '&' va forcer le processus en arrière-plan, de sorte que le timing devrait être assez précis. Je suppose qu'au bout d'un certain temps, il sera désynchronisé par rapport à une horloge réelle, donc vous pouvez soit ajouter des horodatages à ce que fait votre script, soit utiliser une approche avec un daemon qui utilise l'heure du système.
(Merci pour les commentaires)
Je recommande d'ajouter ce script avec systemctl. Ce tutoriel semble parfait pour cela : Créer mes propres fichiers de service systemd
Puisque vous êtes familier avec PHP, vous pouvez créer un daemon/service PHP. J'ai créé un service PHP pour moi-même une fois parce que je devais utiliser une bibliothèque qui n'était disponible qu'en PHP. Il fonctionne sans problème depuis de nombreuses années.
Voici quelques informations sur les démons PHP :