Vous avez 3 options. Ma recommandation :utilisez cron si vous le pouvez, piloté par l'utilisateur si vous le devez et démon en dernier recours.
(1) cron (comme mentionné dans les commentaires)
cron est un planificateur pour les systèmes Linux qui exécutera un travail en ligne de commande sur votre système. Vous vous connectez à votre serveur via ssh, tapez crontab -e
, et ajoutez une ligne comme celle-ci :
4 5 * * * php /path/to/my/script.php
Cela exécuterait le script à 5 h 04 tous les jours.
<?php
// /path/to/my/script.php
// Do something
Certains services d'hébergement permettent de saisir des tâches cron avec une interface graphique. Il existe également des services cron externes, qui appelleront une URL pour vous à des moments précis.
(2) démon
C'est l'option la plus avancée et aussi la moins fiable :vous exécutez un script de ligne de commande qui contient une boucle infinie. Le script vérifie ensuite périodiquement l'état et y répond. Comme il est susceptible de planter après des mois d'exécution, vous devez disposer d'un deuxième script pour le redémarrer au cas où. C'est beaucoup de travail, mais c'est l'approche la plus flexible.
<?php
while (1) {
// fetch $last_exec_timestamp from database
if ($last_exec_timestamp < time() + 86400) {
// set last_exec_timestamp to now in database
// do something
}
sleep(5);
}
Si vous avez une quantité décente de trafic sur votre site, vous pouvez simplement inclure un travail dans le pied de page de votre page, lorsqu'il n'y a plus de sortie. Assurez-vous que ce code est rapide, sinon un utilisateur malchanceux l'attendra.
<?php
// fetch $last_exec_timestamp from database
if ($last_exec_timestamp < time() + 86400) {
// set last_exec_timestamp to now in database
// do something
}
Il existe également des approches plus fantaisistes de "piloté par l'utilisateur" que je n'ai pas personnellement testées dans un autre débordement de pile question .