Bienvenue sur JeuxOnLine - MMO, MMORPG et MOBA !
Les sites de JeuxOnLine...
 

Panneau de contrôle

Recherche | Retour aux forums

JOL Archives

Retour sur les fichiers XML: l'état des serveurs...

Par Feroas de Fouen le 14/9/2002 à 4:15:33 (#2154022)

J'ai mis, il y a déja longtemps, un script php permettant de récupérer les données de l'état du serveur Brocéliande sur mon site.
(ça donnait: XXXX joueurs, Serveur Up).
Ce script marchait parfaitement, mais depuis peu (arrivée des nouvelles chroniques?) il ne marche plus, je n'ai plus rien d'écrit là où avant il y avait l'état du serveur.

J'ai fait tout un tas de tests, mais je n'ose vous donner le résultat tellement il est aberrant (il n'y a aucune erreurs, pourtant le dieu de l'informatique ne veut pas que ça marche comme ça devrait.)

Donc ma question est simple, quelqu'un pourrait-il me fournir un script qui marche et qui donne le nombre de connectés et l'état du serveur de Brocéliande?

Question subsidiaire: expliquer moi pourquoi ce script ne marche pas:

<?php
$ficxml=@fopen("http://www.camelot-europe.com/herald/nb_connected.xml","r");
$ligne=fgets($ficxml,256);

while($ligne=fgets($ficxml,256)) {
if(substr(trim($ligne),0,7)=="<server"){
$pos1=strpos($ligne,"\",1)+1;
$pos2=strpos($ligne,"\",$pos1)-1;
$serveur=substr($ligne,$pos1,($pos2-$pos1)+1);
};
if($serveur=="Broceliande") {

switch(substr(trim($ligne),0,7)) {
case ",1)+1;
$pos2=strpos($ligne,"<",$pos1)-1;
$population=substr($ligne,$pos1,($pos2-$pos1)+1);
echo "$population joueurs \n";
break;
case ",1)+1;
$pos2=strpos($ligne,"<",$pos1)-1;
$status=substr($ligne,$pos1,($pos2-$pos1)+1);
echo "serveur $status";
break;
};
};
};
fclose($ficxml);
?>

Par Fullblaster le 14/9/2002 à 21:35:14 (#2157665)

$fichier = "http://www.camelot-europe.com/herald/servers.xml";
include("xml_parser_server.php");

$xml_parser = xml_parser_create();
xml_set_element_handler($xml_parser, "startElement", "endElement");
xml_set_character_data_handler($xml_parser, "characterData");

echo ";
echo "Status des Serveurs";
echo ";

$fp = fopen($fichier,"r") or die("Erreur de lecture de $fichier");
while ($data = fread($fp, 1024)) {
xml_parse($xml_parser, $data, feof($fp));
}
fclose($fp);

echo ";

xml_parser_free($xml_parser);



et le fichier php de l'include



<?php
function startElement($parser, $name, $attrs) {
global $server, $first, $ckey;

$ckey = $name;

if ($name == "SERVER") {
while (list ($key, $val) = each ($attrs)) {
if ($key == "NAME") {
$server[0] = $val;
}
if ($key == "TYPE") {
$server[1] = $val;
}
if ($key == "UPDATED") {
$server[2] = $val;
}
}
}
if ($name == "POPULATION") {
$first = 1;
}
if ($name == "STATUS") {
$first = 1;
}
}

function endElement($parser, $name) {
global $server, $first, $ckey;

if ($name == "SERVER") {
if (utf8_decode($server[1]) == "French") {

$text1 = sprintf("%s%s", utf8_decode($server[0]), utf8_decode($server[4]));
$text2 = sprintf("%s joueurs", utf8_decode($server[3]));
echo $text1;
echo $text2;
echo ";
}
}
}

function characterData($parser, $data) {
global $server, $first, $ckey;

if (($first == 1) && ($ckey == "POPULATION")) {
$server[3] = $data;
$first = 0;
}
if (($first == 1) && ($ckey == "STATUS")) {
$server[4] = $data;
$first = 0;
}
}


Desole j ai pas netoyer le code y a peut etre 1 ou 2 trucs qui sont relatifs a ma presentation.

Par Feroas de Fouen le 14/9/2002 à 23:35:33 (#2158318)

Merciiiiiiiiiiiiiiii !!!!!

Par laquiche le 16/9/2002 à 18:08:10 (#2168571)

Pour info : moi j ai eu des probleme avec le fichier xml qd il y a eu des guildes proprietaires de forts et qui contenaient des accents ds le nom de l eurs guilde.
un probleme mal gerer par mon script asp (a s arracher les cheveux)
la ca marche mais je ne sais pas encore si c parceque j ai reecrit mon script comme un dieu ou bien parceque en ce moment j ai de la chance et qu aucun fort n est la propriété de ses putains de guildes avec accent .
lol
seul le temps me le dira.:lit:

Re: Retour sur les fichiers XML: l'état des serveurs...

Par Alleria le 17/9/2002 à 0:42:11 (#2171131)

Provient du message de Feroas de Fouen
Question subsidiaire: expliquer moi pourquoi ce script ne marche pas:
$ligne=fgets($ficxml,256);


est tu certain que les lignes du fichier que tu parses font moins de 256 caractères ?

en tous cas l'usage de fgets() me parait douteux pour parser un language dans lequel un retour chariot n'a aucune signification... fscanf() par exemple serait plus adapté.

Par Okam le 20/9/2002 à 10:37:13 (#2193796)

Provient du message de laquiche
Pour info : moi j ai eu des probleme avec le fichier xml qd il y a eu des guildes proprietaires de forts et qui contenaient des accents ds le nom de l eurs guilde.

Ajoutes simplement dans ton :



Sinon Multimania a désactivé la fonction fopen, donc impossible de lire les chroniques depuis 15j sur un site Multimania/Lycos (Free accepte cette fonction par contre).

Par Shinigami le 20/9/2002 à 10:44:35 (#2193818)

eeeuuuhhhh, juste une question : XSL vous connaissez?

- Shinigami -

Par Aron le 20/9/2002 à 11:29:18 (#2194033)

Oui je connais un peu. Mais ce n'est pas simple pour le débutant, d'une part, d'autre part ça devient vite lent dès que le script est un peu complexe.

Par Mael Thagg le 20/9/2002 à 11:53:19 (#2194149)

Provient du message de Shinigami
eeeuuuhhhh, juste une question : XSL vous connaissez?

- Shinigami -


J'utilise CookTop, éditeur XML/XSL freeware : http://www.xmlcooktop.com/

Pour les infos je vais là :
- http://www.allhtml.com/xsl/index.php
- http://www.laltruiste.com/coursxsl/sommaire.html
- http://www.cabinfo.com/xsltut/xsl_tut.htm

Par Shinigami le 30/9/2002 à 10:57:47 (#2258198)

Mael, c'était pas pour avoir des infos, c'est juste que c'est BEAUCOUP plus simple pour des choses aussi légères (bonne remarque d'Aron) qu'afficher l'état des serveurs ou les membres d'une guilde (même avec fonction de tri). Mais merci pour tes liens, en espérant que certains un jètent un oeil pour se simplifier la vie :)

- Shinigami -

JOL Archives 1.0.1
@ JOL / JeuxOnLine