Mysql
 sql >> Base de données >  >> RDS >> Mysql

planifier automatiquement l'exécution d'un script php à un moment précis

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);

}

3. axé sur l'utilisateur

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 .