Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > PEAR
PEAR Forum d'entraide sur le framework PHP : PEAR. Avant de poster -> cours PEAR.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/11/2007, 10h45   #1
Candidat au titre de Membre du Club
 
Inscription : décembre 2006
Messages : 26
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 26
Points : 12
Points : 12
Par défaut [cURL] [Net_ping] Problème proxy

Bonjour,

je fais des tests unitaires sur une api XML (je calcule le temps d'execution avec microtime de chaque requete) et je souhaiterais récupérer les temps de réponses d'un ping sur le serveur pour enlever le temps réseau de mes calculs.

PROBLEME :
Je passe par un proxy qui a l'air de bloquer le ping extérieur. (ping www.google.fr ne passe pas sous windows)

J'ai utilisé la classe Net_ping qui marche très bien sur une IP locale mais pas sur une ip extérieur du au proxy. (je doit pinguer sur http://ip:port)

Connaissez vous un moyen de passer le proxy ou bien de simuler un ping en PHP sans passer par les commandes system ?

Pour passer le proxy, j'utiliser curl pour exécuter mes scripts à distance. peut on faire du ping avec curl?

Je suis preneur de toutes solutions, astuces pour récupérer un temps réseau.

Merci
Tigrou35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/11/2007, 10h49   #2
Nouveau Membre du Club
 
Inscription : août 2007
Messages : 95
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 95
Points : 34
Points : 34
et avec un fsockopen ?
tu calcules le temps avant de le faire, puis le temps apres , et tu soustrais ? theoriquement ca reviendrai au meme ?
Guillomme est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/11/2007, 10h51   #3
Candidat au titre de Membre du Club
 
Inscription : décembre 2006
Messages : 26
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 26
Points : 12
Points : 12
Merci de ta réponses très rapide

Je vais tester cette solution et je vous tiens au courant

Merci beaucoup
Tigrou35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/11/2007, 11h10   #4
Candidat au titre de Membre du Club
 
Inscription : décembre 2006
Messages : 26
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 26
Points : 12
Points : 12
Bon,

J'ai fais ça :
Code :
1
2
3
4
5
6
7
 
$t1 = microtime(true);
	if(!fsockopen ("http://x.x.x.x/",y)){
		addLog("*** IMPOSSIBLE DE SE CONNECTER PAR SOCKET ***");
	}
	$t2 = microtime(true);
	addLog("*** TEMPS SOCKET : ".round($t2-$t1, 3));
et je reçoit toujours le message d'erreur ! donc ma socket ne passe pas le proxy.

Je vais essayer avec curl (puisque je peux lui mettre en option un proxy !
Tigrou35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/11/2007, 11h37   #5
Candidat au titre de Membre du Club
 
Inscription : décembre 2006
Messages : 26
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 26
Points : 12
Points : 12
Bon alors :

voici mon code curl :
Code :
1
2
3
4
5
6
7
8
9
10
11
 
$ch = curl_init("http:x.x.x.x:y");
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);	
	curl_setopt($ch, CURLOPT_PROXY, "http://xxx");
	curl_setopt($ch, CURLOPT_PROXYPORT, y);
	$t1 = microtime(true);
	$output = curl_exec ($ch);
        $t2 = microtime(true);
	addLog($output);
	curl_close ($ch);
	addLog("*** TEMPS PING : ".round($t2-$t1, 3));
cela me retoune :
Citation:
09-11-2007 11:34:05]
Server Error
The following error occurred:

[code=UNRECOGNIZED_REQUEST] The browser is sending an invalid request. Contact your system administrator.
Please contact the administrator.
[09-11-2007 11:34:05] *** TEMPS PING : 0.008
Est-ce qu'une telle réponse peut être assimilé à un temps réseau ?
Tigrou35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/11/2007, 11h45   #6
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Pour le proxy ce n'est pas une URL mais une adresse (éventuellement suivie du port - ie : IP:PORT).

Sachez que vous pouvez obtenir différentes informations concernant le temps écoulé aux différentes phases de la connexion en interne par cURL via la fonction curl_getinfo.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/11/2007, 14h35   #7
Candidat au titre de Membre du Club
 
Inscription : décembre 2006
Messages : 26
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 26
Points : 12
Points : 12
Ok merci pour cette fonction miracle, ca va résoudre toutes mes souffrances

en gros, je récupère ça :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
Array ( 
[url] => http://....
[content_type] => text/xml; charset=UTF-8 
[http_code] => 200 
[header_size] => 276 
[request_size] => 1294 
[filetime] => -1 
[ssl_verify_result] => 0 
[redirect_count] => 0
[total_time] => 0.064 
[namelookup_time] => 0 
[connect_time] => 0.004 
[pretransfer_time] => 0.004 
[size_upload] => 0 
[size_download] => 129 
[speed_download] => 2015 
[speed_upload] => 0 
[download_content_length] => 129 
[upload_content_length] => 0 
[starttransfer_time] => 0.064 
[redirect_time] => 0 )
donc si j'ai bien compris, pour calculer le temps d'exécution de mon script à distance, il faut que je fasse :
tps_exe = starttransfer_time - connect_time

Temps, en secondes, écoulé entre le début et l'envoi du premier octet du transfert MOINS Temps mis en secondes depuis le début à l'établissement de la connexion avec l'hôte distant ou le proxy.

Dois je aussi soustraire le pretransfer_time (Délai (en secondes) séparant le début au début du transfert. Cette étape inclue l'envoi des pré-commandes comme le permet l'option CURLOPT_QUOTE, par exemple) ???
Tigrou35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/11/2007, 15h25   #8
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Je n'ai plus les détails en tête (on les retrouve dans la documentation de cURL) mais le temps écoulé est cumulé à chaque phase. Par exemple le temps de connexion inclut celui de résolution et ainsi de suite. Donc votre (deuxième) méthode de calcul me semble inadaptée (attention également aux éventuelles redirections suivies, qui interviennent à la fin).
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h42.


 
 
 
 
Partenaires

Hébergement Web