#1 28-01-2010 15:56:54

Irulan
Rat
Avatar de Irulan

API tronquée

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)

Code:

<?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

 

#2 28-01-2010 16:20:43

[Admin] Uld
Admin Général
Classe:
Citoyenneté:
Voir/Cacher les infos

Re: API tronquée

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

 

#3 28-01-2010 16:54:46

Subotai
Kiwispider
Avatar de Subotai
Coterie: La Garde Franche
Âge:
Classe: Archer
Citoyenneté: Belerim

Re: API tronquée

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.


-- Subotai (47), cavalier de la Garde Franche
Pas voleur, mais archer quand même.

Hors ligne

 

#4 28-01-2010 17:26:50

Irulan
Rat
Avatar de Irulan

Re: API tronquée

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

 

#5 28-01-2010 18:38:44

Irulan
Rat
Avatar de Irulan

Re: API tronquée

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

 

#6 28-01-2010 19:21:13

[Admin] Uld
Admin Général
Classe:
Citoyenneté:
Voir/Cacher les infos

Re: API tronquée

J'avoue que tu me parle chinois, je connais pas grand chose en admin réseau...

Hors ligne

 

#7 28-01-2010 20:12:45

Irulan
Rat
Avatar de Irulan

Re: API tronquée

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

 

#8 28-01-2010 20:13:42

Florane
Gorille
Avatar de Florane
Coterie: Senecons ascendant AR :D
Âge: 25 ans arkhaniens
Classe: Archère
Citoyenneté: Floralienne

Re: API tronquée

Edit : Ok compris, sans les ref temporelles, c'est merdeux à lire.

Dernière modification par Florane (28-01-2010 20:15:28)

Hors ligne

 

#9 28-01-2010 21:59:42

[Admin] Uld
Admin Général
Classe:
Citoyenneté:
Voir/Cacher les infos

Re: API tronquée

Et qu'est ce qui pourrait causer une coupure de transmission selon toi Iruan??

Hors ligne

 

#10 28-01-2010 22:36:04

Subotai
Kiwispider
Avatar de Subotai
Coterie: La Garde Franche
Âge:
Classe: Archer
Citoyenneté: Belerim

Re: API tronquée

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)


-- Subotai (47), cavalier de la Garde Franche
Pas voleur, mais archer quand même.

Hors ligne

 

#11 28-01-2010 22:54:46

Irulan
Rat
Avatar de Irulan

Re: API tronquée

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

 

#12 28-01-2010 23:31:27

[Admin] Uld
Admin Général
Classe:
Citoyenneté:
Voir/Cacher les infos

Re: API tronquée

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

 

#13 29-01-2010 08:38:57

Irulan
Rat
Avatar de Irulan

Re: API tronquée

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

 

#14 29-01-2010 09:09:59

Subotai
Kiwispider
Avatar de Subotai
Coterie: La Garde Franche
Âge:
Classe: Archer
Citoyenneté: Belerim

Re: API tronquée

C'est peut-être un coup du max_execution_time...


-- Subotai (47), cavalier de la Garde Franche
Pas voleur, mais archer quand même.

Hors ligne

 

#15 29-01-2010 09:12:38

Irulan
Rat
Avatar de Irulan

Re: API tronquée

aussi

Hors ligne

 

Pied de page des forums

Retour sur le jeu Arkhan