Recherche
Peut être aimerez-vous...
Sections du site
Sites Neamar
Lisez ces articles !
| Message post mortem : étape 1 |
|
| Programmation et tuning - Programmation Web |
| Écrit par Neamar |
| Mercredi, 28 Octobre 2009 18:24 |
|
Bienvenue dans cette première partie du tutorial "Mourrez tranquille". Pré-requis :
Rien d'extraordinaire donc, on peut commencer ! Tout d'abord, commençons par les évidences : le script ne fonctionnera que si vous avez au moins un visiteur par jour. Mais pas d'inquiétudes de ce côté-là : même si le site est tout nouveau, rien que les robots des moteurs de recherches suffisent à assurer du trafic. M'enfin, toujours est-il qu'il est plus intéressant de faire cela sur un site connu ! Créez un dossier incaseofdeath/ dans votre site, et placez-y les trois fichiers suivants :
Éditez ensuite avec votre bloc notes préféré un fichier dont vous pouvez assurer qu'il sera chargé chaque jour (le nec plus ultra étant le fichier header.php, ou mieux encore (nec plus plus ultra) le footer.php de votre site afin de ne pas ralentir l'affichage des pages du client), et placez les lignes de code suivantes : if(date('j')==1) { define('CHECK_DEATH',true); include('incaseofdeath/incaseofdeath.php'); } Quelques explications ? Si on est le premier du mois (voir l'aide sur la fonction date avec l'option j), on indique que l'on veut explicitement tester notre mort et on charge le fichier incaseofdeath.php. Si l'on omettait le define(), n'importe quelle personne indiquant l'adresse du fichier incaseofdeath.php dans son navigateur pourrait déclencher le script ; et s'il le déclenchait deux fois les mots de passe seraient envoyés puisqu'il est peu probable que vous auriez indiqué votre existence dans le bref laps de temps entre les requêtes. Fini ? Et non ! Car regardez à nouveau le code : si un autre utilisateur passe le même jour sur votre site, lui aussi va charger le fichier et provoquer le bug décrit plus haut. La solution va être de marquer que le script a été exécuté ce mois-ci pour éviter les multiples appels : if(date('j')==1 && date('n')!=file_get_contents('incaseofdeath/month.txt') { file_put_contents('incaseofdeath/month.txt',date('n')) define('CHECK_DEATH',true); include('incaseofdeath/incaseofdeath.php'); } Et voilà, le tour est joué ! Maintenant, le script n'est appelé qu'une fois par mois, enregistre le numéro du mois pour éviter les doublons, et basta ! L'intérêt résidant aussi dans le fait que les accès disques (file_get_contents()) sont minimisés, puisque la seconde partie de la condition n'est effectuée qu'une fois tous les 31 du mois. Dans la prochaine partie, nous verrons comment remplir notre fichierincaseofdeath.php. |
| Mise à jour le Jeudi, 29 Octobre 2009 17:08 |
