Comment puis-je exécuter un script PHP dans certain intervalle (par exemple une fois par jour)?

StackOverflow https://stackoverflow.com/questions/865381

  •  21-08-2019
  •  | 
  •  

Question

J'ai un script php qui lit un fichier via http (le fichier est sur un autre domaine). Je voudrais lire ce fichier une seule fois ou deux fois par jour, au lieu de se connecter à chaque fois que le site est actualisé. Est-il un autre moyen que de le faire avec Cron? Je ne veux pas utiliser la cause Cron je préfère configurer ce comportement dans le script lui-même .. il est flexible, donc je peux l'utiliser partout sans la mise en place Cron chaque fois. merci

Était-ce utile?

La solution

Si vous ne pouvez pas ou ne voulez pas utiliser l'utilisation cron et il est autorisé à le mettre à jour uniquement lorsque la page est accessible. Vous pouvez mettre en cache le résultat de la requête HTTP et seulement le mettre à jour sur une page charger si le cache est plus d'un jour ou quel intervalle de votre choix.

Autres conseils

Je l'ai fait ce genre de chose dans le passé quand je n'ai pas eu accès à Cron:

$lastRunLog = '/path/to/lastrun.log';
if (file_exists($lastRunLog)) {
    $lastRun = file_get_contents($lastRunLog);
    if (time() - $lastRun >= 86400) {
         //its been more than a day so run our external file
         $cron = file_get_contents('http://example.com/external/file.php');

         //update lastrun.log with current time
         file_put_contents($lastRunLog, time());
    }
}

Vous pouvez également utiliser Web Based Cron si vous voulez frapper un site sur un intervalle de temps.

Vous pouvez même utiliser une table de base de données - très simple dans sa structure, id, date, URL de script, et tout ce dont vous avez besoin - et ajouter une ligne à chaque fois que vous exécutez le script

.

Ensuite, exécutez le script avant tout simplement vérifier les numéros de ligne pour chaque jour que vous avez.

Vous pouvez utiliser un Cronjob . Vous pouvez ensuite exécuter le script php par la ligne de commande.

php /someplace/somefile.php

Le Cronjob serait la suivante si vous mettez à jour tous les jours.

0  0  *  0  0  php /someplace/somefile.php

Puisque vous déclarez explicitement que vous ne voulez pas utiliser Cron, la seule façon de le faire (sans quelque chose d'analogue à Cron) est de mettre en place votre script en tant que démon. Cependant, à moins que vous avez vraiment besoin de la flexibilité qui fournissent daemons, Cron est beaucoup plus facile et plus simple.

Voici un démon rendez-vous à travers.

Si vous utilisez Linux avec une distro systemd:

J'ai eu besoin pour la planification des emplois chaque année en fonction, indépendamment de l'application (dans le cas où le système réamorcé ou quelque chose comme ça), et on m'a donné l'idée d'utiliser systemd Timers . L'Arc sur elle donne quelques exemples.

Qu'est-ce qui ne va pas avec Cron?

Vous avez un choix de couple avec Cron -. Votre php peut être invoquée par la ligne de commande interpréteur PHP, ou vous pouvez utiliser wget ou aller chercher, ou l'équivalent de votre PHP invoquer sur le serveur

En général, l'exécution de PHP dans le contexte du serveur Web a une limite de temps sur combien de temps il peut exécuter, donc en général vous ne pouvez pas mettre en place des fils PHP « de fond » à faire des choses « plus tard ».

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top