| SIMULATION DE TACHE CRON |
Outils pour webmaster. Trucs et astuces en code HTML, JavaScript, PHP : améliorer son site internet
Le principe - Les scripts - Le test
Descriptif :
Cette simulation de tâche CRON vous permet d'accéder à une des fonctions
serveur réservée aux professionnels.
Mais qu’est une tâche CRON ? C’est une application serveur, donc du côté de
votre hébergeur, qui va effectuer un travail sur votre site à certaines heures
paramétrables sans intervention de votre part.
Les applications pratiques : surveiller un ou des groupes de fichiers, de dossiers, faire du «
nettoyage », éliminer des fichiers, les copier, les déplacer, les renommer,
tester la disponibilité de votre site, remplacer une page de votre site à une
date donnée (Noël, Jour de l'An), interdire tout ou partie de votre site pendant
un temps donné, publier une ou des pages même si vous êtes absent, etc.
Malheureusement, la plupart des sites mutualisés ou, plus particulièrement, les
hébergements gratuits, ne disposent pas de cette fonction. Il va donc falloir
employer une astuce pour contourner le problème.
Le principe : on va introduire un script PHP dans une de vos pages et ce sont
vos visiteurs qui vont provoquer la « tâche » CRON en la chargeant.
- Lorsqu’il sera exécuté, ce script va lire l’heure du serveur.
- Il va la comparer avec l’heure enregistrée que vous aurez choisie préalablement pour
déclencher la tâche.
- Si cette dernière est plus petite que l’heure délivrée par le serveur, le
travail s’effectue.
Plus en détail :
- Vous disposez d’une interface administrateur qui va vous permettre de choisir
la prochaine heure à laquelle vous souhaitez voir s’effectuer la tâche et
qui déterminera l’intervalle de temps entre chaque opération.
- Les données obtenues, prochaine heure et intervalle de temps, seront
enregistrées dans un fichier (heure.txt). Il est évidemment possible d’employer
une base MySQL, mais on peut se demander si l’enregistrement de quelques
dizaines d’octets ne semble pas disproportionné. En outre, les bases de données
ne sont pas exemptes de ralentissements, voire de blocages. Il semble donc que
l’utilisation très simple de fopen corresponde mieux.
- Vous introduisez une portion de script PHP dans une de vos pages qui se
trouvera être l’une des plus visitée.
- Chaque visite de cette page actionnera ce script. Celui-ci va ouvrir le
fichier heure.txt et comparer l’heure précédemment enregistrée avec l’heure
actuelle du serveur.
- Si l’intervalle de temps est inférieur à celui que vous avez programmé, il ne
se passe rien.
- Si l’intervalle de temps est supérieur ou égal, le script enregistre dans
heure.txt la nouvelle date et l’heure actuelle du serveur plus l’intervalle de
temps puis exécute un fichier (module) qui contiendra les opérations diverses à
effectuer.
L’INTERFACE ADMINISTRATEUR
|
Elle affiche la date/heure locale du serveur, l’intervalle de temps qu’il doit y
avoir entre chaque tâche, des champs modifiables pour introduire votre
date/heure.
La date/heure délivrée par le serveur est fixée par la localisation géographique
de ce dernier. Si votre serveur est aux Etats-Unis, côte ouest, l’heure serveur
sera celle locale. En aucun cas elle ne sera l’heure déterminée et affichée par
votre ordinateur si vous vous trouvez en Europe.
A partir de la date/heure délivrée par le serveur, vous allez déterminer la
date/heure à laquelle vous souhaitez activer une tâche.
Modification des champs.
- Par défaut, le curseur est placé dans le champ « minutes ».
- Vous pouvez introduire le nombre que vous voulez dans chaque champ. Celui-ci
sera converti au format « date/heure/calendrier ». Ainsi, si vous mettez « 360 »
dans le champ « minutes », à l’exécution du formulaire, 360 sera transformé en 6
heures. Même chose pour les autres champs.
- Le champ « seconde » a été négligé.
- Rafraîchissez la page juste avant d’introduire la date de la prochaine
exécution du script afin d’obtenir l’heure serveur la plus actuelle.
- Introduisez vos données et sans attendre, enregistrez.
- Si vous avez trop attendu et que l’intervalle obtenu est négatif, il y aura incohérence dans votre programmation. Le script vous
le signalera et n’enregistrera pas vos données.
- La date/heure que vous aurez choisie ainsi que l’intervalle de temps entre
chaque tâche, seront enregistré dans le fichier heure.txt
CHOIX DE LA PAGE OÙ INTRODUIRE LE SCRIPT «
CRON »
Afin que la vérification de l’heure programmée par rapport à l’heure serveur
soit aussi souvent que possible effectuée, mettez le script contrôleur dans la
page la plus vue par vos visiteurs en
fin de page juste après la balise
</html> ou en PHP ?>
Si vous voulez l’introduire dans plusieurs pages, enregistrez le script, par exemple, avec le nom
control.php et mettez en
fin des ces pages,
juste après la balise </html> :
< ? include("control.php"); ?>
Problème : les hébergements mutualisés sont souvent limités en
bande
passante ou très souvent en
nombre de requêtes (hits). Si la suite
de ces scripts ne consomme que peu de bande passante, par contre, ils
provoqueront des requêtes vers votre serveur qui entreront dans le total de hits
autorisés.
Si par exemple vous choisissez d’introduire le script de contrôle dans votre
page d’accueil, qui est en principe la plus vue, l’ouverture de cette page
provoquera 1 requête par include, 1 requête par ouverture du fichier heure.txt
et, éventuellement, 1 requête supplémentaire par écriture dans ce fichier
lorsque la nouvelle date/horaire sera générée. Vous pouvez donc choisir de ne
pas utiliser include et de mettre le script de controle.php directement dans le
code d’une page moyennement visitée. Le résultat en sera le même.
LES MODULES D’ACTION.
Une fois le principe de base de l’administration et de la lecture/écriture
posée, il ne reste plus qu’à définir des petits modules indépendants qui
pourront faire l’action que vous leur aurez assignée.
Pour une démonstration pratique de cet utilitaire, nous allons effectuer la
surveillance du fichier .htaccess : disponibilité, poids et remplacement
automatique par son double en cas de détérioration.
Ceux qui utilisent le script de l’anti-aspirateur de site, auront remarqué
que l’ajout, jour après jour, des URL bannies, conduit à un fichier qui devient
de plus en plus gros. Il faudra donc éliminer manuellement les anciennes URL.
Travail fastidieux qui, s’il n’est pas fait, comme lors de votre absence pour vos congés annuels,
conduit à un fichier .htaccess conséquent qui va ralentir l’ensemble de votre
site. D’autre part, lors de l’écriture d’une nouvelle URL bannie, le fichier
peut se corrompre. Votre site ne sera plus alors protégé et rien ne vous l’aura signalé.
Avec cette simulation de tâche CRON, vous pourrez dormir sur vos deux oreilles.
Le module .htacces va :
- Surveiller l’existence de ce fichier.
- Mesurer son volume.
- S’il est plus gros qu’un nombre d’octets que vous aurez préétabli, il sera remplacé par un
double plus léger.
- S’il s’est corrompu et ne mesure que quelques octets, il sera remplacé par son
double d’origine.
- S’il n’existe plus, il sera remplacé par son double d’origine.
- Vérifier que le CHMOD de .htaccess est conforme.
- Vous envoyer un mail en cas d’anomalie.
Voilà votre site sous haute surveillance.
Maintenant, faites preuve d’imagination et créez, suivant vos besoins propres,
d’autres modules qui s’ajouteront à celui-ci.
Voici quelques fonctions PHP qui vous y aideront.
Définissez tout d'abord le fichier et son chemin <? $file =
"dossier1/fichier1.ext"); ?>
Pour copier le fichier <? copy($file,"dossier2/fichier2.ext");
?>
Pour le renommer et le déplacer en même temps <? rename($file,"dossier2/fichier2.ext");
?>
Pour l'effacer <? unlink($file); ?>
Pour créer un dossier <? mkdir("dossier1", 0700); ?>
Pour détruire un dossier vide <? rmdir("dossier"); ?>
Vous pouvez aussi utiliser les fonction copy et rename pour les dossiers
Et pour plus d'informations sur les possibilités des fonctions
fichiers :
documentation officielle PHP
AVERTISSEMENT : soyez attentif à la configuration
PHP de votre hébergeur, surtout en ce qui concerne les sites mutualisés
ou hébergements gratuits. Certaines fonctions peuvent être désactivées ou
limitées.
Pour obtenir cette configuration envoyez à la racine de votre site un simple
fichier, nommé, par exemple, phpinfo.php contenant la ligne : <
? php(info); ?> et,
en complément, renseignez-vous auprès de votre hébergeur.
Mise en oeuvre des scripts : voir page suivante
Le principe - Les scripts - Le test
Copyright www.toulouse-renaissance.net ©