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

  • Auteur de la discussion Auteur de la discussion Zecat
  • Date de début Date de début
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).
 
Code:
$connect = @fopen($url, "r");		 
if($connect)
{
	fclose($connect);
	$lestatut = 0;
} else {
	$lestatut = 1;
}

J'utilise un truc comme ca :)
 
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:
 
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:.
 
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.
 
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 ?
 
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.
 
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.
 
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:
 
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:
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut