2009-02-03 11 views
6

J'ai certaines fonctions qui utilisent curl pour extraire des informations de quelques sites et les insérer dans ma base de données. Je me demandais juste quelle est la meilleure façon d'exécuter cette tâche toutes les 24 heures? Je cours depuis Windows maintenant, mais je vais probablement passer à Linux une fois que je suis en direct (si cela fait une différence). Je travaille dans le cadre de symfomie maintenant.exécuter une tâche PHP toutes les 24 heures

J'entends cronjobs peut le faire ceci ... mais en regardant le site, il semble fonctionner à distance et je préfère garder les choses à la maison ... Puis-je "exécuter un service" sur mon ordinateur? quoi que cela signifie;) (ont entendu utilisé)

Merci pour toute aide, Andrew

Répondre

17

C'est exactement ce Cron (linux) ou Scheduled Tasks (fenêtres) sont pour.

Vous pouvez les exécuter sur votre serveur d'applications pour tout conserver au même endroit. Par exemple, j'ai un cron fonctionnant sur mon serveur domestique pour sauvegarder ses bases de données MySQL tous les jours. Un seul système est impliqué dans ce processus.

1

Vous pouvez définir une tâche planifiée dans cron (ou une tâche planifiée dans Windows). Le plus simple est de créer un script shell (script batch sous Windows) qui exécute le script php à partir de la ligne de commande (grâce à cela vous n'avez pas besoin d'utiliser les ressources du serveur www). Bien sûr, vous exécutez le script sur la machine cible.

7

Ajouter 0 0 * * * php /path/to/your/cronjob.php à votre crontab devrait accomplir ceci.

0

Si, pour tout ce que vous décidez que Cron ou ordonnanceur fenêtres ne convient pas, je l'ai parfois trouvé à portée de main pour écrire une application Java rapide qui fait la même chose:

Vous pouvez utiliser les appels System.getRuntime().exec("cmd line stuff here");. Vous pouvez ensuite déformer cette opération dans un TimerTask. Enfin, vous lancez un objet Timer en ajoutant TimerTasks et en spécifiant les temps et la fréquence etc ...

Ceci est clairement plus compliqué que les exemples mentionnés ci-dessus mais je l'aime parce que vous pouvez lancer une gestion intelligente des erreurs et envoyer vous-même alertes par e-mail ou similaire lorsque quelque chose se fout.

Probablement trop cher mais peut-être intéressant de regarder si vous avez déjà plusieurs opérations de ce genre à traiter.

sweeney