Le moyen le moins gourmand pour tester si une page "répond" ?

WRInaute accro
Quel est à votre avis le moyen le moins consommateur (temps, ressources) pour tester si une page (ou plus globalement un site et donc sa page home) est "on line" et donc répond.

Probleme posé :

à ma droite quelques centaines ou milliers de ndd
et je voudrais le plus rapidement posssible pouvoir mettre une croix en face de ceux qui ne sont pas online à un instant T

Note : juste besoin de savoir si online ou pas (pas besoin de recupérer du contenu).
 
WRInaute accro
Code:
$connect = @fopen($url, "r");		 
if($connect)
{
	fclose($connect);
	$lestatut = 0;
} else {
	$lestatut = 1;
}

J'utilise un truc comme ca :)
 
WRInaute accro
Tester si le code http est 200 ou 301. (je t'en ai pas déjà parlé ?)

Code:
$code = getHTTPHeaders($url_site);
$tab = explode(" ",$code[0]);
if ($tab[1] == 200 || $tab[1] == 301) {}


Y a plus qu'à faire une comparaison entre Fin' et moi pour savoir quel est le moyen le moins gourmand et le plus rapide.



Mais qu'est-ce que j'ai à lui répondre au cat, moi... :roll:
 
WRInaute discret
La solution de finstreet est pas mal sauf que si c'est une 404 ou 500 lestatut = 1.

Sinon au lieu d'utiliser un GET tu peux utiliser HEAD qui est censé renvoyer les headers de GET sans le contenu ... Donc logiquement ça va plus vite.

Pour aller plus vite dans ce genre de traitement tu peux utilisé les fork et balancer les requêtes en parallèle sur les différents serveurs ce qui va BEAUCOUP plus vite, mais c'est pas forcement la joie à programmer :mrgreen:.
 
WRInaute impliqué
petitchevalroux a dit:
Sinon au lieu d'utiliser un GET tu peux utiliser HEAD qui est censé renvoyer les headers de GET sans le contenu ... Donc logiquement ça va plus vite.
+1, c'est la meilleure façon que je connaisse.
 
WRInaute accro
FloBaoti a dit:
petitchevalroux a dit:
Sinon au lieu d'utiliser un GET tu peux utiliser HEAD qui est censé renvoyer les headers de GET sans le contenu ... Donc logiquement ça va plus vite.
+1, c'est la meilleure façon que je connaisse.
et ca donne quoi au niveau code php a ecrire ?
 
WRInaute accro
finstreet a dit:
Code:
$connect = @fopen($url, "r");		 
if($connect)
{
	fclose($connect);
	$lestatut = 0;
} else {
	$lestatut = 1;
}

J'utilise un truc comme ca :)
C'est aussi ce que j'avais trouvé sur phpsource mais je voulais être sûr que y avait pas mieux.
 
WRInaute impliqué
Je ne crois pas qu'il y ait une fonction PHP qui fasse un HEAD directement.
Une des solutions est d'utiliser cURL et de lui dire d'exécuter une requête HEAD au lieu de GET.
Sinon personnellement j'aime bien écrire tout ça "à la main", c'est à dire ouverture de socket sur le serveur distant, et envoit des entetes HTTP qui vont bien. Ca se trouve déjà tout fait sur le net, ne serait-ce que sur la doc de fsockopen je pense.
 
WRInaute discret
Zecat a dit:
FloBaoti a dit:
petitchevalroux a dit:
Sinon au lieu d'utiliser un GET tu peux utiliser HEAD qui est censé renvoyer les headers de GET sans le contenu ... Donc logiquement ça va plus vite.
+1, c'est la meilleure façon que je connaisse.
et ca donne quoi au niveau code php a ecrire ?
un truc du genre (exemple 1) en remplaçant GET par HEAD et le bonus c'est que c'est beaucoup plus clean que les fopen distants ... qui sont à proscrire :mrgreen:
 
WRInaute discret
FloBaoti a dit:
Sinon personnellement j'aime bien écrire tout ça "à la main", c'est à dire ouverture de socket sur le serveur distant, et envoit des entetes HTTP qui vont bien. Ca se trouve déjà tout fait sur le net, ne serait-ce que sur la doc de fsockopen je pense.
Les grands esprits se rencontrent :mrgreen:
 
Discussions similaires
Haut