Vous n'êtes pas identifié.
Bonjour,
Je constate un bug récurrent, mais à la reproduction aléatoire dans mon outil de cartographie.
Warning: XMLReader::read() [xmlreader.read]: http://api.arkhan.org/request_vue.php?l ... 43fc9a3f:4: parser error : Extra content at the end of the document in /var/www/htdocs/arkhan/common.php on line 102
Warning: XMLReader::read() [xmlreader.read]: <api name="request_vue" daily_usage="7" /> in /var/www/htdocs/arkhan/common.php on line 102
Warning: XMLReader::read() [xmlreader.read]: ^ in /var/www/htdocs/arkhan/common.php on line 102
Warning: XMLReader::read() [xmlreader.read]: An Error Occured while reading in /var/www/htdocs/arkhan/common.php on line 102
Warning: Cannot modify header information - headers already sent by (output started at /var/www/htdocs/arkhan/common.php:102) in /var/www/htdocs/arkhan/get_visu.php on line 5
Visu OK
Après avoir loggué tous les appels que je fais, j'ai trouvé que lors cde cette erreur, j'ai une visu de ce type : (2010-01-28 15:45:42)
<?xml version="1.0" encoding="UTF-8"?> <arkhan xmlns:dc="http://purl.org/dc/elements/1.1" xmlns:content="http://purl.org/rss/1.0/modules/content/"> <headers link="http://www.arkhan.org" language="fr" version="0.3" generator="DaUldoMimines" /> <api name="request_vue" daily_usage="15" />
Il en manque un bout, comme qui dirait.
Bien sûr, si je la re-récupère, ça marche ...
Cela se produit que je lise le flux directement (XMLReader::open(url)), ou que je récupère le fichier avant de le parser (file_get_contents($url); XMLReader::xml($text))
Dernière modification par Irulan (28-01-2010 16:03:15)
Hors ligne
Je vois pas bien, le problème est de ton côté non? S'il en manque un bout c'est que tu n'a pas tout récupéré.
Hors ligne
Il semblerait que ce soit plutôt le serveur de l'API qui coupe la connexion HTTP avant d'avoir fini d'envoyer l'XML.
Hors ligne
Je pense comme Subotai. Mon script php ne se plaint pas d'avoir perdu la connexion, et c'est assez systématique[1], le fait de couper juste là, après <api />
[1] Je veux dire que ça coupe toujours là quand ça coupe.
Hors ligne
J'ai réussi à reproduire (je pense que ça marche mieux quand on se déplace beaucoup que quand on se déplace lentement, mais j'ai pas les PA pour faire de vraies statistiques)
Toujours est-il que j'ai les traces des échanges entre mon serveur et le serveur d'API :
Appel qui marche
Appel qui plante
On peut remarquer que :
- c'est bien le serveur API qui décide que la connexion est finie (envoi d'un FIN)
- il n'a même pas rempli complètement son 1er paquet (alors qu'il en faut 3 pour tout faire passer)
- au niveau temporel, il n'y a pas de chevauchement des requêtes : quand ça plante (tcp stream 54), le FIN est émis 1ms avant le ACK de la connexion suivante (tcp stream 55)
Je garde le .pcap complet, si tu souhaites le regarder plus en détail, je peux te l'envoyer par mail
Hors ligne
J'avoue que tu me parle chinois, je connais pas grand chose en admin réseau...
Hors ligne
Pour faire simple : au niveau réseau tout se passe bien, ce n'est donc pas un problème de transmission du XML, mais de génération de celui-ci.
D'ailleurs même le serveur web le dit : ce fichier fait 287 octets, pas un de plus. (sur l'appel d'avant c'était 4454)
Hors ligne
Edit : Ok compris, sans les ref temporelles, c'est merdeux à lire.
Dernière modification par Florane (28-01-2010 20:15:28)
Hors ligne
Et qu'est ce qui pourrait causer une coupure de transmission selon toi Iruan??
Hors ligne
Apparemment il n'y a pas de coupure de transmission réseau : ce serait plutôt l'XML lui-même qui est tronqué, à la source, par le serveur qui le génère. Mais cet XML incomplet semble lui-même transmis normalement, et la transmission s'arrête quand le transfert est bel et bien terminé.
Dernière modification par Subotai (28-01-2010 22:40:34)
Hors ligne
Je suis parvenu aux mêmes conclusions que Subotai.
Il doit y avoir un bug dans la génération du XML (qui prend 3s sur le cas que j'ai pu examiner)
Hors ligne
Bah moi je ne fais qu'envoyer du texte avec les entêtes xml, ce que je comprend pas c'est le côté aléatoire de la chose, chez moi les choses fonctionnent ou ne fonctionnent pas, tout autre comportement à tendance à me rendre dubitatif...
Hors ligne
Il suffit d'un timeout pour qu'une chose fonctionne ou pas selon les fois (et la charge)
Sinon, tu peux essayer de logguer le nombre de lignes renvoyées par la requête qui récupère les cases en visu.
Ou regarder le comportement de ta fonction de génération du XML en cas d'erreur SQL. Le XML renvoyé n'est pas valide (pas de </arkhan>), ça peur laisser penser à une sortie non prévue (exception ?)
Hors ligne
C'est peut-être un coup du max_execution_time...
Hors ligne