JeuWeb - Crée ton jeu par navigateur
Cron - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Cron (/showthread.php?tid=3092)



Cron - Thedeejay - 23-09-2008

Kikoo!
je cherche une base cron externe ou le moyen de l'installer sur un serveur (privé)
parce que mon hebergeur ne le propose pas... (c'est cron j'en ai besoin :p)
merci bien!!


RE: Cron - combo - 23-09-2008

Tu as http://www.webcron.org/ qui est très bien. sache tout de même que tu auras toujours des décalages de quelques secondes voir minutes. Le mieux est toujours le cron directement depuis le serveur.


RE: Cron - Anthor - 23-09-2008

Si tu n'as pas CRON, tu peux toujours utiliser des classes de substitutions, comme celle la : http://phpclasses.ca/browse/package/3787.html


RE: Cron - Thedeejay - 23-09-2008

merci mais c'est bon, mon serveur l'a en fait :p
il ne me reste plus qu'a savoir m'en servir...


RE: Cron - Ekilio - 24-09-2008

Alors... pour cron, si tu as un serveur dédié, la meilleure chose a faire est de l'utiliser.

Tu as indiqué que tu l'as, c'est donc bon. Sinon, au passage, la plupart des serveurs dédiés (que je connaissent en tous cas) sont sous debian, donc :

Code :
apt-get install cron

Et tu as ton cron (mais autant que je sache, c'est en théorie intégré à la distribution de base, donc vous ne devriez pas à avoir à faire ça).

Ensuite, rapidement, pour s'en servir, rien de plus simple !

Donc, on commence par lancer crontab (l'utilitaire de gestion des taches) :

Code :
crontab -e

Alors, quelques mots sur crontab (pour plus de détails, un man crontab existe). D'abord, il faut citer ses sources : voici les miennes, mais c'est en anglais.

crontab -e sert pour être parfaitement exact à lancer l'éditeur par défaut (souvent vim ou emac) sur le fichier crontab. C'est ce fichier qui va indiquer exactement ce qu'il faut faire, par l'utilisation de lignes de ce type :

m h d M D commande

Vous noterez les espaces.

Le premier "m", en minuscule, indique les minutes. Si il est rempli, la commande ne sera executé que lorsque l'horloge du serveur indiquera que la minute est "m".
Le petit "h" indique les heures. Pareil que pour les minutes, mais avec les heures donc.
Le premier "d", en minuscule, indique les jours. Petite nuance, c'est le numéro du jour dans le mois qui est pris en compte ici : un 13 indiquerais qu'il faut executer le script tous les 13 du mois.
Le second "M", en majuscule, indique le numéro du mois.
Le second "D", en majuscule, indique le numéro du jours, mais du jours de la semaine cette fois. Cela va de dimanche (0) à samedi (6), sachant que vous pouvez utiliser 7 pour le dimanche aussi (donc 0 et 7 conviennent). Donc si vous mettez 4 ici, ce script sera executé le jeudi, par exemple.
Et enfin, la commande est la ligne de commande à executer.

Les espaces servent à délimiter les différents marqueurs. Une * est un joker pour indiquer tous.

Donc, par exemple :

0 0 * * 1 php /var/www/monscript.php
Ceci executera monscript.php tous les lundi à minuit pile
* * 1 * * php /var/www/monautrescript.php
Ceci executera monautrescript.php toutes les minutes du premier de chaque mois

On peut aussi spécifier des intervals et des listes pour les valeures :

0 0 * * 1-5 php /var/www/toto.php
Ceci executera toto.php les cinq premiers jours de la semaine à minuit pile
0 0 * * 1,3,5 php /var/www/toto.php
Ceci executera toto.php le lundi, mercredi et vendredi à minuit pile.

Maintenant, revenons rapidement sur commande : toutes les commandes qui peuvent être passées en ligne de commande normale peuvent être passées ici.

Quelques exemples interessants de commandes :

cp -R /var/www/monsite /var/www/backup
Ceci copie le dossier /var/www/monsite et tous ses sous-repertoires dans le dossier /var/www/backup
mysqldump --all-databases > backup.sql
Ceci sauvegarde la totalité de vos bases mysql dans le fichier backup.sql

A noter que si, comme moi, vous avez du mal avec les commandes shell et ne voulez pas vous embetter à gérer les variables bash, une méthode simple pour ne pas vous retrouver avec un unique backup est de créer une tache cron par jour, et de mettre un nom différent au fichier de backup chaque jour.

Enfin, la fonction interessante : php.

Alors là, on va compliquer un peu, parce qu'il va être important de savoir si, en ligne de commande, vous pouvez ou non lancer la commande php. Pour le vérifier, rien de plus simple : il suffit de taper php /var/www/truc.php dans un terminal. Si il indique que la commande n'est pas trouvée, c'est que ce n'est pas possible.

Alors, si c'est possible, tant mieux. Sinon, il y a deux méthodes : la lente, qui consiste à créer un lien symbolique, et qui n'apporterais que quelques caractères en moins dans votre tache cron - autant dire rien - et la rapide (mais moins élégante, je l'admet) qui consiste à ignorer ce petit inconvénient.

Si vous choisissez la méthode lente, google est votre ami. Sinon, il vous faut déterminer le chemin de votre executable php. Alors, soit vous avez compilé depuis les sources (si si, il y a des masochistes), auquel cas vous savez parfaitement où il est, soit vous avez installé un paquet (ou récupéré une distrib pré-installée), et dans ce cas, il est probablement dans /usr/local/bin/php (vérifiez : tapez dans un terminal /usr/local/bin/php /var/www/test.php).

Sinon, bah... Faut fouiner. Et pour ça, deux manières très simples : un phpinfo() (c'est marqué dessus, c'est comme le port salut), soit un whereis php.

Donc, voila, vous avez votre chemin vers l'executable ? Paaaarfait. Alors maintenant, c'est un jeu d'enfant :

Supposons que le script que vous voulez executer soit /var/www/monscript.php. Il suffit de faire :

Code :
/usr/local/bin/php /var/www/monscript.php

Et ca executera le script ! Et donc bien sûr, en mettant les indicateurs de temps vus précédemments, ça l'executera tous les X temps. Je précise aussi, pour les puristes, que :

Code :
/usr/local/bin/php /var/www/monscript.php > /var/www/cron_result.php

Redirigera l'affichage du résultat du cron dans /var/www/cron_result.php. Ca peut être utile pour le débogage par exemple (puisque sans ça, vous ne verrez pas les erreurs php).

Et ajoutons :

Code :
/usr/local/bin/php -q /var/www/monscript.php > /var/www/cron_result.php

Qui enlève les en-têtes http de la page générée, ce qui rends la lecture plus claire.

Je précise que bien sûr, /usr/local/bin/php est à remplacer par le chemin vers php (ou par php tout court si votre installation le permet).

Voila voila, mes deux centimes :-)


RE: Cron - Ter Rowan - 24-09-2008

ça vaut plus que deux centimes oui

très clair en tout cas pour une "première approche" (je parle de moi)

merci Smile


RE: Cron - KiwiToast - 30-10-2008

L'association nainwak.org propose un service de résolution de tâches cron aussi. Comme webcron, mais sans la pub et en mieux foutu. Smile


RE: Cron - Thedeejay - 30-10-2008

c'et bon, mon interface d'admin de mon serveur le proposait mai sous le nom taches régulieres (et non cron)