Planification de scripts PHP ?

WRInaute occasionnel
Sous Windows, j'utilise beaucoup le planificateur de tâches pour exécuter des scripts VBScripts et ainsi mettre à jour automatiquement mes sites web (récupération automatique de contenu sur des sites distants, création de fichiers txt à partir de requêtes dans des bases de données, etc.)

Est-il possible dans un environnement Apache Linux Php de planifier des tâches de ce type (lire toute les 3 heures le contenu d'une base MySQL, sauvegarder le résultat dans un fichier txt par exemple) ?
 
WRInaute discret
absoluteweb a dit:
Est-il possible dans un environnement Apache Linux Php de planifier des tâches de ce type (lire toute les 3 heures le contenu d'une base MySQL, sauvegarder le résultat dans un fichier txt par exemple) ?

Oui.

"man 5 crontab" t'en diras plus
 
WRInaute occasionnel
Je n'ai pas d'Apache sous la main...
Je sais que cron permet de planifier l'exécution de commandes, mais dans le cas d'un script php, comment cela se passe t-il concrètement ?
As-tu un exemple de planification d'un script php ?
 
WRInaute discret
absoluteweb a dit:
Je n'ai pas d'Apache sous la main...
Je sais que cron permet de planifier l'exécution de commandes, mais dans le cas d'un script php, comment cela se passe t-il concrètement ?
As-tu un exemple de planification d'un script php ?

Soit tu passes par l execution du php par l executable php , mais en général php est directement associé en module à apache et tu n'a pas acces a l'executable.

Soit tu appelle un script bash qui utilise wget pour faire la requete qui va bien.

Personellement, je n'utilise jamais apache ou php pour les scripts de maintenance, mais des bidouilles en perl: j'evite ainsi les problemes de 'votre script a depasse le temps d execution max authorisé', les problemes de securité (de la maintenance accessibles par le web, bof bof), et puis c'est toujours une bonne raison de faire un peu de perl :))

Allez, un exemple qui m a servit pour mettre a jour une image d'une webcam :

Dans ma crontable (crontab -e)

MAILTO=""
0-59/5 * * * * /home/melmoth/bin/webcam

Et le contenu du script webcam:

#!/bin/bash
wget -O /var/www/melmoth/webcam.jpg http://babylonbox.dyndns.org/webcam/webcam.jpg

Ce qui donne un truc du genre:

Toute les 5 minutes, va chercher http://babylonbox.dyndns.org/webcam/webcam.jpg et range l'image dans /var/www/melmoth/webcam.jpg
 
WRInaute occasionnel
oulala c'est bien compliqué vos histoires de crontab :?

Moi j'utilise Webcron : http://webcron.org/
Ca remplace la crontab. C'est tout simple à utiliser et configurer.

absoluteweb, ça fait ce que tu veux.

Jocelyn
 
WRInaute occasionnel
Tu peux aussi prendre un vieux PC (pas trop quand même), installer une distribution linux, le connecter à ton petit (ou grand réseau), et le tour est pratiquement joué.

Même que l'interface x-windows est presqu' aussi "intuitive" que son honorable window$ de ms.

Franchement j'y ai gouté ... et j'aime... j'adore.

En plus de dix années de micro informatique, enfin je trouve un système qui ressemble au bon vieux dos, mais avec tous les outils d'aujourd'hui... et sans tous les bugs de ms...


Le cron est aussi paramètrable par x-windows (désolé pour les puriste linuxien), un ou deux clique et hop c'est en ligne. Reste plus qu'un chose à resoudre... la déconnexion quotidienne de wanamachin...

Du coup webcron n'a pratiquement plus d'utilité si vous avez un petitlinux dans le coin et une bonne connexion adsl...
 
WRInaute occasionnel
melmoth a dit:
Elle sert à quoi cette ligne ?
0-59/5 * * * * /home/melmoth/bin/webcam
Ca ça va... Je comprend, j'ai lu 2, 3 trucs sur crontable...
#!/bin/bash
wget -O /var/www/melmoth/webcam.jpg http://babylonbox.dyndns.org/webcam/webcam.jpg
Cette ligne, je comprend pas (faut dire que je ne connais pas wget...).
Dans le cas d'un fichier script.php, qui disons fait une lecture dans une base mysql, créé une chaine de caractères contenant les résultats de la requête et enregistre un fichier texte sur le disque dur (fichier qui est inclut dans une page du site), quelle ligne de commande faut-il utiliser ?

Jocelyn a dit:
oulala c'est bien compliqué vos histoires de crontab
Moi j'utilise Webcron : http://webcron.org/
Ca remplace la crontab. C'est tout simple à utiliser et configurer.
absoluteweb, ça fait ce que tu veux.
J'avais trouvé ce site en faisant quelques recherche sur Cron. C'est le type de EasyPhp qui l'a créé. Mais c'est jamais très bon de passer par un prestataire supplémentaire surtout pour assurer ce type de service. Le site peut être en rade, fermer, etc.
J'utilise actuellement de nombreux scripts sous windows, non seulement pour mettre à jour des parties de mes sites mais également pour poster les cartes virtuelles différées de mon site www.letimbre.com. Si webcon.org est inaccessible au moment de l'envoi des cartes, c'est la cata...

deblok a dit:
Tu es sur un dédié ou un mutualisé ?
Pour le moment je suis en dédié Windows 2000. Je me renseigne activement pour passer sous Linux Apache Php MySQL pour une histoire de coût et de fiabilité. Mais bien sur j'espère pouvoir retrouver toutes les fonctionnalités de mes sites coté Php. Donc je serais en dédié Linux... un jour peut être.

Gilbert a dit:
Tu peux aussi prendre un vieux PC (pas trop quand même), installer une distribution linux, le connecter à ton petit (ou grand réseau), et le tour est pratiquement joué.
Ou la... C'est l'usine à gaz... Un pc pour les tâches planifiées... En plus mon PC à droit aussi à ses nuits de sommeil :)
 
WRInaute occasionnel
mes petits pc chez moi tournent 23:59/24 et 7/7 ... enfin presque, puisque de temps un petit reboot ne peut faire de mal ... même quand c'est contre mon gré...

Ceci dit, il vaut mieux laisser tourner un PC et ses disques, que de booter trop souvent (économiseur par ex...)... la phase délicate étant le démarrage !! et l'arret.
 
WRInaute discret
absoluteweb a dit:
melmoth a dit:
Elle sert à quoi cette ligne ?

a eviter d avoir un mail toute les 5 minutes qui donne la sortie standard des script de la crontable.

#!/bin/bash
wget -O /var/www/melmoth/webcam.jpg http://babylonbox.dyndns.org/webcam/webcam.jpg

Cette ligne, je comprend pas (faut dire que je ne connais pas wget...).
Dans le cas d'un fichier script.php, qui disons fait une lecture dans une base mysql, créé une chaine de caractères contenant les résultats de la requête et enregistre un fichier texte sur le disque dur (fichier qui est inclut dans une page du site), quelle ligne de commande faut-il utiliser ?

si tout ce que tu veux c'est d aller cherhcer http://tonsite/tonscript.php qui lui fait tout le boulot:

wget -O /dev/null http://tonsite/tonscript.php

on cherche la page, et on redirige tout vers /dev/null (genre la poubelle).
 
WRInaute occasionnel
Merci melmoth, cela répond tout à fait à ma demande. Je suppose que le site webcron.org fonctionne de cette manière, en proposant "simplement" une interface web pour saisir les tâches planifiées...
 
WRInaute occasionnel
deblok a dit:
oui mais le jour ou webcron est en rade tu fait comment ?

Alors, mes stats ne seront pas mises à jour pendant 24h. Ca ne porte préjudice à personne.
Mais c'est certain que s'il s'agissait d'une manipulation "vitale" de mon site, je me tournerais vers une solution telle que faire tourner cron moi-même sous Linux.
Pour l'instant, Webcron me convient parfaitement.

Jocelyn
 
WRInaute discret
si je comprend bien les crons

bonjour,

je désire faire marcher un cron sous ovh 720plan qui ferait des updates de mes tables tous les jours.

Suffit-il d'appeler un fichier Php (qui execute les requetes) de cette façon pour eviter les temps d'é"xécution ?

Code:
#!/bin/bash 
wget -O /var/www/aef/requetes http://www.anti***tes-en-france.com/outils/scripts/update.php/

merci d'avance
 
Discussions similaires
Haut