[R] Détecter lenteur d'affichage page web
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
[R] Détecter lenteur d'affichage page web
Bonjour,
Mon programme fait appel à des pages stockées sur internet pour y trouver des données. Lorsque l'hébergeur a des problèmes de serveur, l'affichage est très lent. Ce qui impatiente l'utilisateur de mon programme. Autoit permet-il de détecter ce problème pour, par exemple, afficher un avertissement priant l'utilisateur de patienter en raison des problèmes de vitesse du serveur, afin qu'il ne désespère pas ?
Je vous remercie.
Mon programme fait appel à des pages stockées sur internet pour y trouver des données. Lorsque l'hébergeur a des problèmes de serveur, l'affichage est très lent. Ce qui impatiente l'utilisateur de mon programme. Autoit permet-il de détecter ce problème pour, par exemple, afficher un avertissement priant l'utilisateur de patienter en raison des problèmes de vitesse du serveur, afin qu'il ne désespère pas ?
Je vous remercie.
Modifié en dernier par aulus le lun. 27 janv. 2014 11:54, modifié 1 fois.
- mikell
- Spammer !

- Messages : 6292
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: [..] Détecter lenteur d'affichage page web
Comment le programme récupère-t-il ces pages ? par _IE*, InetGet, autre ?
Le bout de code correspondant serait le bienvenu
Le bout de code correspondant serait le bienvenu
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Re: [..] Détecter lenteur d'affichage page web
Voici ce que je tente de faire. Est-ce que je comprends bien la fonction Ping et son retour ?
Code : Tout sélectionner
$var = Ping("www.monsite.net", 250)
if $var = 0 Then
msgbox(48,"Avertissement","La connexion a échoué... ")
else
$oIE = ObjCreate("Shell.Explorer.2")
GUICtrlCreateObj($oIE, 13, 35, @DesktopWidth - 20, @DesktopHeight - 20)
If $var > 100 Then msgbox(48,"Avertissement","La connexion est lente... Merci de patienter...")
$oIE.navigate("http://www.monsite.net/mapage.html")
endif
- mikell
- Spammer !

- Messages : 6292
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: [..] Détecter lenteur d'affichage page web
Peut-être tenter un truc comme ça
Code : Tout sélectionner
$oIE.navigate("http://www.monsite.net/mapage.html")
$hTimer = TimerInit()
While $oIE.Busy
$diff = Round(TimerDiff($hTimer)/1000)
If $diff > 3 Then SplashTextOn("", "Merci de patienter ...", 300, 55, -1, -1, 49)
Sleep(1000)
Wend
SplashOff()" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Re: [..] Détecter lenteur d'affichage page web
Pour ce qui est du ping, je pense que tu as bien compris.
Mais le fait de faire un ping te donnera uniquement un temps de réponse "réseau". Le résultat ne sera pas représentatif quant à la charge du serveur web.
La méthode du timer proposée par Mikell sera bien plus adaptée.
Mais le fait de faire un ping te donnera uniquement un temps de réponse "réseau". Le résultat ne sera pas représentatif quant à la charge du serveur web.
La méthode du timer proposée par Mikell sera bien plus adaptée.
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Re: [..] Détecter lenteur d'affichage page web
Merci mikell pour votre code très efficace.
Merci jguinch pour vos éclaircissements.
1. Comment adapter le code de mikell pour la fonction :
2. Dirigeant vers un second hébergeur si le premier est lent, j'ai codé ainsi :
Le code surligné est-il bien placé ?
Sleep(1000) ne me semble plus utile : ai-je raison ?
Merci jguinch pour vos éclaircissements.
1. Comment adapter le code de mikell pour la fonction :
Code : Tout sélectionner
ShellExecute("http://monsite/mapage.html")Code : Tout sélectionner
SplashTextOn("", "Connexion à la page internet." & @CRLF & "Veuillez patienter...", 280, 55, -1, -1, 49)
Local $oIE = ObjCreate("Shell.Explorer.2")
GUICtrlCreateObj($oIE, 13, 35, @DesktopWidth - 20, @DesktopHeight - 100)
$oIE.navigate("http://monsite[color=#FF0000]1[/color].net/monfichier.php")
Local $hTimer = TimerInit()
While $oIE.Busy
Local $diff = Round(TimerDiff($hTimer)/1000)
If $diff > 3 Then
SplashOff()
SplashTextOn("Connexion à la page internet", "Connexion lente..." & @CRLF & "Merci de patienter ...", 300, 55, -1, -1, 49)
[color=#FF0000]$oIE.navigate("http://monsite2.org/monfichier.php")
ExitLoop[/color]
Sleep(1000)
endif
Wend
SplashOff()
Sleep(1000) ne me semble plus utile : ai-je raison ?
Re: [..] Détecter lenteur d'affichage page web
C'est sûr, le Sleep() n'est pas utile si tu le mets là. Si tu veux le laisser (ce que je te conseille) , il faut le mettre après le EndIf
Par contre, le premier SplashOff() est inutile (cf doc SplashTextOn() )
Par contre, le premier SplashOff() est inutile (cf doc SplashTextOn() )
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
- mikell
- Spammer !

- Messages : 6292
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: [..] Détecter lenteur d'affichage page web
Attention tout de même : contrairement au _IENavigate() qui (par défaut) attend sagement la fin du chargement de la page pour poursuivre le script, l'instruction COM $oIE.navigate() n'est pas bloquante
Il est donc vivement conseillé d'utiliser systématiquement une solution alternative de ce type pour éviter des soucisEt un SplashTextOn() avertissant de la redirection serait certainement favorablement perçu par l'usager 
Il est donc vivement conseillé d'utiliser systématiquement une solution alternative de ce type pour éviter des soucis
Code : Tout sélectionner
While $oIE.Busy
Sleep(10)
; ...
Wend" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Re: [..] Détecter lenteur d'affichage page web
Ce splash indique à l'utilisateur que le programme tente d'ouvrir une page internet pour effectuer la tâche qu'il a sélectionnée. Il est informé par là qu'une connexion à internet est nécessaire pour cette tâche.jguinch a écrit : Par contre, le premier SplashOff() est inutile (cf doc SplashTextOn() )
J'ai placé les mêmes données chez deux hébergeurs différents afin que, si l'un d'eux venait à avoir des difficultés de connexion (ce qui est fréquent parce que je n'ai pas choisi les hébergeurs les plus chers !) , l'utilisateur de mon programme ne soit pas bloqué dans son travail.mikell a écrit : Et un SplashTextOn() avertissant de la redirection serait certainement favorablement perçu par l'usager
Que les données proviennent de chez Pierre ou de chez Paul n'a donc pas beaucoup d'importance pour l'utilisateur qui, d'ailleurs, ne s'aperçoit de rien, les adresses ne s'affichant pas sur son écran. En fait, je ne redirige pas l'utilisateur, je redirige la recherche de données.
Les tentatives de connexion chez un premier hébergeur qui serait lent et une redirection, prennent du temps. C'est pourquoi je voulais en informer l'utilisateur par un message de patience afin qu'il ne pense pas que le programme ait planté.
Pour conclure, je laisse donc le sleep dans la boucle, et je le réduis à 10. Je ne comprends pas vraiment l'utilisation de cette boucle.
Re: [..] Détecter lenteur d'affichage page web
Je parlais du SplashOff, pas du SplashTextOn.
C'est quoi que tu ne comprends pas ?
La boucle sert simplement à vérifier le temps de chargement.
While $oIE.Busy veut dire Tant que la page se charge
Code : Tout sélectionner
While $oIE.Busy
Local $diff = Round(TimerDiff($hTimer)/1000)
If $diff > 3 Then
; SplashOff() ; Inutile car SplashTextOn va de toute façon avoir le même effet
SplashTextOn("Connexion à la page internet", "Connexion lente..." & @CRLF & "Merci de patienter ...", 300, 55, -1, -1, 49)
$oIE.navigate("http://monsite2.org/monfichier.php")
ExitLoop
endif
Sleep(10)
WendLa boucle sert simplement à vérifier le temps de chargement.
While $oIE.Busy veut dire Tant que la page se charge
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Re: [..] Détecter lenteur d'affichage page web
Tout marche à merveille. Le code répond tout à fait à mon attente et j'ai encore appris de nouvelles choses sur AutoIt.
Je vous remercie encore tous deux pour votre temps et votre patience, et l'efficacité de vos solutions, conseils et éclaircissements.
Je vous remercie encore tous deux pour votre temps et votre patience, et l'efficacité de vos solutions, conseils et éclaircissements.
- mikell
- Spammer !

- Messages : 6292
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: [R] Détecter lenteur d'affichage page web
Idéalement dans ce genre de situation il faudrait faire comme çasachant qu'avec "While $oIE.Busy" la sortie de boucle est automatique dès que la page est chargée
► Afficher le texte
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Re: [R] Détecter lenteur d'affichage page web
En effet, il faut aussi songer au cas où le second hébergeur ferait aussi des siennes ou au cas où il n'y a pas de réseau. Bref, songer au pire !
J'ai sorti le premier SplashTextOn de la boucle car elle sautille comme une puce frénétique lorsqu'elle lui appartient.
Enfin, j'ai supprimé la SplashTextOn de connexion réussie parce que, la page s'affichant, elle ne me paraît pas indispensable.
Merci mikell pour ce code qui me paraît maintenant au top.
J'ai sorti le premier SplashTextOn de la boucle car elle sautille comme une puce frénétique lorsqu'elle lui appartient.
Enfin, j'ai supprimé la SplashTextOn de connexion réussie parce que, la page s'affichant, elle ne me paraît pas indispensable.
Merci mikell pour ce code qui me paraît maintenant au top.


