preg_match_all() et charge du serveur distant...

Répondre
ikoria
le 10/03/2008 à 09:01
ikoria
salut à tous.
Je suis un petit nouveau en php, et un copain ma pondu un script de ce genre:

<?php
error_reporting(E_ALL);

$joueur['Achile '] = "";
...
$joueur['Yéti '] = "";

foreach($joueur as $key => $value) {
$html = file_get_contents("http://heroesofwarcraft.nainwak.org/index.php?option=classement&rac=&ori=&user=" . $key);
$HEIN = preg_match_all("/td align=\"center\" class=content\>([0-9]*) \(([0-9]*)\)/", $html, $matches);
/* echo "<pre>";
print_r($matches);
echo "</pre>";*/
echo $key . ";" . $matches[1][0] . "\n";
}
?>


Il me permet, en exécutant le fichier.php, de récupérer des xp pour chaque noms de joueurs.

ce script marche très bien, mais dépend beaucoup (à priori) de la charge de travail du serveur distant. En l'occurrence, mon script est hébergé sur un serveur gratuit de free.
Quand celui ci est chargé (le week-end) rien ne s'affiche à l'écran, ou cause des erreurs de consultation (erreur délais de réponse).
Aurriez-vous une solution pour améliorer mon code, ou connaitriez-vous une autre fonction (quitte à ce que je fasse un tableau ou liste adéquat de nom avant) pour me permet de réalisé ma fonction?
Merci pour vos réponses ^^
Iko.
LA GLOBULE
le 10/03/2008 à 10:03
LA GLOBULE
D'un point de vue de conception, tu as un problème, c'est à dire que tu dépends du site heroesofwarcraft.nainwak.org.
Si celui ci meurt, ta page meurt.

Bref, il faut faire des concessions dans ce cas la :
- abandonner le temps réel comme tu le fais actuellement, et récupérer l'xp du joueur une fois par heure par exemple
- stocker en base de données l'xp du joueur pour éviter de la redemander à ce site
- si le site distant est mort, afficher la dernière XP connue avec un petit message du genre "donnée peut être pas à jour"
- etc.
ikoria
le 10/03/2008 à 10:15
ikoria
salut, et merci pour ta réponse.
Effectivement, le fonctionnement dépend également du fonctionnement du site "heroesofwarcraft..."

Sur l'utilisation de ce script, en fait, je n'exécute le fichier que 1 fois par semaine (donc pas de tps réel ;) ). Ensuite j'enregistre le code source de la page résultante en file.csv, pour un retraitement excel derrière.

...une fois par heure...

L'idée me semble bonne. En fait je me demandais si la fonction preg_mach_all() n'était pas trop rapide pour le dialogue entre mon fichier sur free et le serveur de "heroe...". Donc si c'est effectivement le cas, il faudrait que je rajoute un delais entre chaque boucle du foreach, non?
par avance merci pour tes explications ^^
LupusMic
le 11/03/2008 à 00:57
LupusMic
Dans ton script, preg_match_all n'est exécuté qu'une fois le fichier récupéré.

D'ailleurs, quels sont les messages d'erreur de PHP lorsqu'il échoue ?
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours