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

Surveillance du fichier .htacces
 L'heure locale actuelle du serveur est : 25-05-2005-07-45-29

 Date/Heure d'action précédente enregistrée : 25-05-2005-20-32-27   -   Intervalle d'action choisi : 12h47m00s minutes.

 Entrer la date de la prochaine action du script :   Jour :    Mois :    Année :    Heure :    Minutes :

              

  
A effectuer juste avant d'introduire les nouvelles données


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

Retour

Copyright www.toulouse-renaissance.net ©