Magazine High tech

Firefox bégaie... ou Ma requête PHP est exécutée deux fois !

Publié le 30 juillet 2009 par Dominikg
Aujourd'hui, je vais parler d'un excellent cas de magie noire...
J'étais tranquillement en train de faire de l'insertion de données dans une base, à partir d'un fichier xml récupéré par ftp.
Rien de bien surprenant dans ce programme PHP : lecture d'un fichier zip, extraction des images et du fichier xml, parsing du fichier xml avec un peu de xpath, écriture d'une requête SQL et exécution de cette requête. Ce sont tous des points normalement abordés dans une formation spécialisée base de donnée avec PHP.
Sauf que ...
Chaque requête SQL est exécutée deux fois !
Tiens, tiens ... Il n'y a pas de boucle qu'un mauvais contrôle pourrait faire exécuter une fois de trop. Relecture du code dans tous les sens, vérifications diverses, contrôle des logs. Conclusion : la page PHP est appelée deux fois de suite lorsqu'on demande son exécution.
Essai en désactivant les extensions de Firefox (c'est à dire utilisant un profil vierge) : idem.

Essai avec un autre navigateur : la page est appelée une seule fois avec Internet Explorer.
A cet instant là, je commence à respirer : tout ce que je connais du fonctionnement du Web n'est pas remis en cause par un sort jeté sur moi et il s'agit simplement d'un problème avec Firefox. Oui, mais quel problème ?
Un peu de recherche sur Google ne me donne guère de réponses. Il y a deux ou trois cas où des développeurs ont eu la même difficulté, qu'ils ont ou pas résolus, avec des méthodes tenant de la magie. En clair, on tripote le code et ça finit par marcher.

Et enfin, je trouve un rapport de bug : Firefox reloads pages when automatically changing encodings qui fait réagir mon détecteur de magie. Il se trouve que je fais afficher, en phase de mise au point, une partie du contenu du fichier xml, codé en unicode. Et que l'entête que le script PHP envoie indique à Firefox que l'encodage est de l'iso-8859.
Firefox commence le chargement de la page en considérant que c'est de l'iso-8859, puis reçoit des caractères unicode, donc effectue une nouvelle requête en ayant ajusté l'encodage de cette page.
Vérification : je supprime les affichages de mise au point et la page n'est bien exécutée qu'une seule fois.
 
La conclusion à en tirer est qu'il faut toujours faire attention à l'encodage de ses pages Web, même quand on ne fait que de la mise au point !

Vous pourriez être intéressé par :

Retour à La Une de Logo Paperblog

Ces articles peuvent vous intéresser :

  • Les frameworks de développement PHP

    Qu’est ce qu’un framework de développement? Pour faire simple, un framework est un environnement de développement offrant des outils et fonctionnalités... Lire la suite

    Par  Axedesign
    HIGH TECH, INFORMATIQUE, INTERNET
  • Securimage, Captcha PHP gratuit

    Securimage, Captcha gratuit

    Securimage est un script PHP permettant de mettre en place une protection de type Captcha dans vos formulaires. Le rôle de captcha est très simple : “Ce test es... Lire la suite

    Par  Myrmex
    HIGH TECH, INFORMATIQUE, INTERNET, LOGICIELS
  • Livre blanc « Industrialisation PHP »

    Livre blanc Industrialisation

    Alterway, la société de service en logiciels libres dans laquelle je travaille vient de sortir un livre Blanc sur l’industrialisation php. Lire la suite

    Par  Pydubreucq
    HIGH TECH, INFORMATIQUE
  • Manuel PHP, cours PHP gratuits

    Manuel PHP, cours gratuits

    PHP vous est encore une “terra incognita” ? Besoin de vous perfectionner en PHP ? Progresser avec les derniers concepts PDO (PHP Data Object) ? Lire la suite

    Par  Myrmex
    HIGH TECH, INFORMATIQUE, LOGICIELS
  • TutorialZine, Slider PHP/jQuery

    TutorialZine, Slider PHP/jQuery

    TutorialZine est un nouveau “magazine” qui propose à ses lecteurs des tutoriels d’excellente qualité, des suppléments gratuits (freebies) et des ressources... Lire la suite

    Par  Myrmex
    HIGH TECH, INFORMATIQUE, LOGICIELS
  • Firefox mon ami

    Firefox

    À l'occasion des 5 ans du meilleur des navigateurs, j'ai nommé Firefox, je réponds à l'invitation de dagrouik de publier mes statistiques navigateur. Afin... Lire la suite

    Par  Bix
    HIGH TECH, INFORMATIQUE, INTERNET
  • Firefox mon ami

    Firefox

    A l’occasion des 5 ans de Firefox, le site intox2007.info a lancé une chaine afin de montrer la place que tient Firefox dans les visites de son site internet.... Lire la suite

    Par  Pydubreucq
    HIGH TECH, INFORMATIQUE

A propos de l’auteur


Dominikg 19 partages Voir son profil
Voir son blog

l'auteur n'a pas encore renseigné son compte l'auteur n'a pas encore renseigné son compte l'auteur n'a pas encore renseigné son compte