Statut des serveurs en PHP [MAJ 28/05/07 v1.2]

Répondre
Partager Rechercher
J'ai profité du down pour répondre à une demande dans le topic vgServers

Il s'agit simplement de l'affichage des statuts des serveurs via un petit script en PHP.


Version actuelle: 1.2 (28/05/07)


Pré-requis:

- PHP 4 ou 5


Installation:

1. Téléchargez l'archive.
2. Placez le fichier 'vgserversstatus.php' où vous voulez sur votre hébergement web
3. Incluez le script n'importe où dans la page concernée:

Code:
Dans un fichier PHP

include("CHEMIN_VERS_LE_FICHIER/vgserversstatus.php");

Dans un fichier HTML

<?php include("CHEMIN_VERS_LE_FICHIER/vgserversstatus.php"); ?>
4. Placez ce code à l'endroit où vous voulez que la liste apparaisse:

Code:
Dans un fichier PHP

AfficherVGServersStatus();

Dans un fichier HTML

<?php AfficherVGServersStatus(); ?>
Vous avez le choix d'afficher la liste complète (en utilisant le code au-dessus) ou seulement d'un serveur:

Code:
AfficherVGServersStatus("Gelenia");
Exemples d'affichages.


Changelog:

28/05/07 Version 1.2 adaptation du code pour la version 4 de PHP
06/02/07 Version 1.1.1 petit correctif du code concernant un bug qui empêchait de voir le statut
04/02/07 Version 1.1 permettant de n'afficher que le serveur de son choix
03/02/07 Sortie initiale


Bugs connus:

- Renvoi un timeout sur l'ouverture de l'url si vous êtes sur Free. Ceci est du à la configuration de PHP de Free qui n'autorise pas l'ouverture d'url externes ailleurs que sur le port 80 (ce script utilise le port 7000 (imposé par SOE)).


Prévu pour la prochaine version:

- A vous de me le dire


Si vous avez des remarques/suggestions, n'hésitez pas
Simple suggestion, tu devrais separer la recuperation du statut avec l'affichage. et par exemple stocker le statut dans une 2eme colonne de ton tableau $servername. Et mettre l'affichage sous forme de table dans une fonction.

Comme ca celui qui veut pas se prendre le chou il appelle juste la fonction et ca affiche la table, celui qui veut presenter differement les choses il va recuperer le statut dans la variable qui va bien. (Par exemple une guilde va peut être vouloir n'afficher que le statut de son serveur)
excellent initiative

j'essaye d'integrer ce script au site en CMS que j'ai mis en place pour ma guilde (j'utilise le CMS dragonfly) , et aprés l'adapation qui s'impose (remplacement des echo par des $content.= et donc forcement des $content par $contenu ) le CMS accepte le script ... mais la fonction fopen semble poser probleme ...

un message d'erreur signale
Citation :
Warning line 52: fopen(http://patch.vanguardsoh.net:7000/pa...ates_live.html) [function.fopen]: failed to open stream: Connection timed out
et bien sur le script affiche le message d'erreur correspondant
Citation :
Erreur lors de l'ouverture de l'url!
une idée de l'origine du pb ?
allow_url_fopenOnOn

etant hebergé par free j'ai du mal a mettre la main sur le phpinfo() ... mais des infos sont dispo directement grace au cms ... j'ai passé en gras la ligne que tu devait sans doute vouloir checker ... ben vi la fonction fopen est bien suporté ...

j'ai chercher quelques info sur le net .. cela viendrai d'une valeur de timeout reglé trop basse ... tu peux confirmer ? (j'ai remarqué que la page -celle de sony- mets quelques seconde a s'afficher ...)

en plus j'ai trouvé la valeur de 6006 caractere un poil faible ... tabler plus sur 7000 quand les serveur sont down
Justement je voulais ton phpinfo pour le timeout

Pour l'avoir, créé un fichier "info.php" avec le code suivant:

Code:
<?php

phpinfo();

?>
Pour la valeur 6006 (qui est le poids en octets à récupérer, pas le nombre de caractères ), ça permet de ne récupérer que ce dont le script a besoin pour trouver les statuts. Tu peux l'augmenter si tu veux ça n'a aucune incidence si ce n'est sur le temps de rapatriement des données.

Par ailleurs la page de patch bug depuis quelques jours, elle affiche les informations en double voir en triple

Edit:

La fonction qui permet de changer le temps maximum d'exécution d'un script est

Code:
set_time_limit();
Seulement elle ne fonctionne que si PHP n'est pas en safe_mode, dans ce cas il faut modifier directement le fichier ini de configuration de php et la je ne pense pas que Free te le permette

Si c'est effectivement ça qui coince, et que tu ne peux pas modifier cette valeur, je vais essayer de trouver une autre solution pour accélérer/optimiser le temps de rapatriement.

Pour trouver cette valeur sans se farcir le phpinfo(), créé un fichier avec ce code:

Code:
<?php

ini_get('max_execution_time');

?>

Re-édit: OK PM reçu

Je vais donc optimiser le code afin qu'il puisse rapatrier les données petits bouts par petits bouts

Re-re-edit: en-fait je dis n'importe quoi puisqu'il bloque dès l'ouverture de l'url donc ce n'est pas une question de rapatriement des données mmm..

Re-re-re-edit: je viens de tester via un ftp chez free aussi, j'ai la même erreur.... et mes recherches sont guerres encourageantes, apparemment pas moyen de faire marcher si l'hebergeur bloque la variable max_timeout...

Re-re-re-re-edit: j'ai ptet trouvé une soluce, stay tuned

Re-re-re-re-re-edit: bon ben même en passant par les socket il veut pas.. je crois que Free n'aime pas dutout les appels extérieurs

Re-re-re-re-re-re-edit: après quelques recherches sur google, Free n'a pas l'air d'aimer les fopen et autres fsockopen extérieurs
J'ai un soucis avec ce code.
Je l'ai pas encore inséré a un site je l'ai juste mis sur une page de test.
les fichiers sont dans le meme dossier.
Voici le contenu de ma page :

Code:
<?php
include("vgserversstatus.php");

AfficherVGServersStatus();

?>
C'est pour moi un simple test pour afficher le statut des serveurs.
Mais la page reste blanche.
Rien n'apparaît.
Il y a une variable a faire apparaître avec un echo ?
Une configuration a faire de le fichier vgserversstatus.php ?
Non aucune configuration à faire en plus, il suffit normalement de charger le script puis de l'appeler via la fonction comme tu l'as fait.. c'est étrange!

Quelques pistes:

- Peux-tu essayer en spécifiant le nom d'un serveur? (AfficherVGServersStatus("Gelenia"); par exemple)

- Tu as apparemment créé une page de test, j'imagine donc que tu parles d'une simple page php vierge avec le code que tu as donner?

- Sur quel hébergeur es-tu?

- La version de PHP?
Citation :
Publié par Kaworu-kun
Non aucune configuration à faire en plus, il suffit normalement de charger le script puis de l'appeler via la fonction comme tu l'as fait.. c'est étrange!

Quelques pistes:

- Peux-tu essayer en spécifiant le nom d'un serveur? (AfficherVGServersStatus("Gelenia"); par exemple)

Deja fait

Citation :
Publié par Kaworu-kun
- Tu as apparemment créé une page de test, j'imagine donc que tu parles d'une simple page php vierge avec le code que tu as donner?
Vi je fais tjrs comme ca pr tester, page vierge

Citation :
Publié par Kaworu-kun
- Sur quel hébergeur es-tu?
En local via easyphp

Citation :
Publié par Kaworu-kun
- La version de PHP?
PHP Version 4.3.3
Citation :
Publié par Leank Soon

PHP Version 4.3.3


Citation :
Publié par Kaworu-kun dans le post originel

Pré-requis:

- PHP 5 ou supérieur
En effet j'utilise la syntaxe de PHP 5 pour le traitement des données. L'adapter pour le PHP 4 pourquoi-pas, mais pas ce soir (ou si quelqu'un l'a déjà fait, pas de problème le script est gpl ).

Edit: bon j'ai regardé vite-fait, l'adaptation est simple, j'upload une nouvelle version du script dans la soirée
Voila j'ai uploadé la nouvelle version (cf. premier poste). Je n'ai pu la tester qu'en local pour PHP 4 mais ça a marché sans problème donc... fais moi signe dans tout les cas

Edit: de rien
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés