Exécution de tâches automatiques

1 message   •   Page 1 sur 1
Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

12 mai 2006, 15:20

Il arrive souvent que vous ayez besoin d'exécuter des tâches de manière régulière et automatique au sein de votre application web.
Par exemple : récupérer des informations sur un site distant, purger des tables de statistiques, mettre à jour des informations, faire des sauvegardes de données...

Il existe plusieurs façons de lancer l'exécution de scripts automatiquement.

Le choix de l’une d’entre elles dépend principalement du type de votre serveur, et de votre accès ou non à sa configuration.

1 - Vous avez accès à la configuration du serveur

1.1 Pour un serveur UNIX
Le gestionnaire de tâche pour les systèmes UNIX est nommé « crontable ». Il s’agit d’une table contenant la liste des tâches à exécuter et leur fréquence d'exécution.

Par exemple, pour lancer l’exécution du script « update.php » via l’exécutable php.exe tous les jours à 4h30, il vous faudra ajouter ce type de ligne dans la table « crontable » via la commande UNIX « crontab -e » :

Code : Tout sélectionner

30 4 * * * /bin/php /home/toto/update.php
:!: Utiliser le PHP CLI risque de poser problème pour les librairies non compilées dans PHP. Les fonctions qui appartiennent à des modules chargés comme « Dynamic Extension » ne seront pas trouvées. Solution: utiliser wget ou curl qui simulera l'appel de la page/script par un navigateur :
  • Avec wget:

    Code : Tout sélectionner

    30 8-22/1 * * * /usr/bin/wget --timeout=5 --tries=2 -q -O /dev/null 'http://www.host/page.php'
  • Avec curl

    Code : Tout sélectionner

    30 8-22/1 * * * /usr/bin/curl --connect-timeout 5 --retry 2 'http://www.host/page.php'
Note : wget et curl sont 2 outils Unix, vous aurez plus d'infos en tapant la commande « man wget|curl » dans une console, ou en cherchant « man wget|curl » sur Internet.

Les possibilités offertes par ce gestionnaire de tâches sont très nombreuses, et pour plus de renseignements je vous invite à lire l’article suivant : http://lea-linux.org/cached/index/Admin ... omate.html

:idea: Chez OVH, vous pouvez faire une demande d'ajout à la Crontab à l'administrateur.
:idea: Chez Planet-work, vous pouvez gérer vous-même vos tâches via un formulaire.

1.2 Pour un serveur Windows
Vous devez utiliser les tâches programmées.
Pour cela, rendez vous dans le Panneau de configuration > Tâches programmées (Scheduled Tasks)
Un assistant vous permettra d'en ajouter.


2 - Vous n'avez pas accès à la configuration du serveur
Une solution existe : Webcron

Par exemple, pour sauvegarder votre base de données, il vous suffit de créer un script sauvegarde_base.php. Dans ce script, vous enregistrez votre base de données dans un fichier. Ensuite, vous n'avez qu'à ajouter une tâche dans votre compte Webcron pour exécuter la requête http://www.domaine.com/sauvegarde_base.php aux heures voulues.

A n'utiliser que si vous ne pouvez pas accéder à la configuration du serveur, car cette solution présente quelques inconvénients comme la purge manuelle des logs par exemple.
Mais c'est un outil bien pratique si l'on a rien d'autre à sa disposition.

Site officiel de Webcron : www.webcron.org

Edition du 11/06/07 : service équivalent chez www.hiwit.org (signalé par Henri).
--
Ouckileou, Ripat, Xenon_54, Zeus

1 message   •   Page 1 sur 1