HTTPSocket me semble être extrêmement efficace dans la plupart des
cas et son implémentation est très agréable. Cependant, dans mon cas 0 :
- Il me génère des erreurs de type 9 pour lesquelles je n'ai aucune
information alors que Curl n'a pas de problèmes.
- Il a une interprétation script du HTTP que n'ont pas la plupart des
sites. Du coup, de nombreuses URL ne fonctionnent pas (ex que nous
avons vu ensemble : http://www.internetactu.net?feed=rss2)
- Il ne gère pas les redirections.
- Le programme est instable.
Les problèmes 2 et 3 peuvent être résolus, ce que j'ai fait. En
revanche, je ne parviens pas à résoudre l'erreur de type 9 et
l'instabilité. Avec CurlMSB, je n'ai jamais eu de plantage.
Sinon, le problème est le suivant :
Mon programme lit des fils RSS en parallèle en utilisant des threads.
Ces threads gèrent deux choses :
- L'affichage dans l'interface (listbox) de l'état du chargement du
RSS (en cours ou terminé pour ne pas surcharger)
- Le lancement du chargement de chaque URL en utilisant aussi des
threads afin de ne pas être bloqué par des pages ou des sites dont le
chargement est trop long et profiter au maximum de la bande passante.
Les threads de chargement des URL font deux choses :
- Affiche l'état du chargement (en cours, terminé ou l'erreur)
- Enregistre le résultat dans une base de données.
C'est en théorie assez simple. Dans la pratique, mon interface est
figée, malgré toutes les techniques que je connais (refresh de la
fenêtre dans un timer ou refresh de la fenêtre après chaque
chargement, ou refresh des seuls éléments réactualisés après chaque
événement qui les affectent). Rien ne fonctionne.
C'est pourquoi je m'intéresse à App.DoEvents, que je ne connais pas !
Powel
P.-S. J'ai aussi essayé avec le Shell en utilisant Curl directement
en ligne de commande. Le problème est exactement le même.
Le 11 août 07 à 20:18, Stéphane Pinel a écrit :
Le 11 août 07 à 13:44, Powel a écrit :
Il n'y a pas ce problème avec des centaines de HTTPSocket (non en
thread mais avec l'option YieldTime), mais ces derniers ne sont
pas assez "fiables" pour ce genre de tache.
Peux-tu m'en dire plus ?
Par exemple, en quoi HTTPSocket n'est pas fiable pour ce type de
taches ?
Merci.
---
Stéphane Pinel
Support Technique en Français
stephane at realsoftware dot fr - http://www.realsoftware.fr
43, Rue Marius Aufan 92300 Levallois-Perret (FR)
Rejoignez la communauté francophone des développeurs REALbasic :
http://www.realsoftware.com/fr/support/listmanager/
|