preg_match_all() et charge du serveur distant...

Répondre
ikoria
ikoria
Déconnecté
salut à tous.
Je suis un petit nouveau en php, et un copain ma pondu un script de ce genre:

  1. <?php
  2. error_reporting(E_ALL);  
  3.  
  4. $joueur['Achile '] = "";  
  5. ...  
  6. $joueur['Yéti '] = "";  
  7.  
  8. foreach($joueur as $key => $value) { 
  9.    $html = file_get_contents("http://heroesofwarcraft.nainwak.org/index.php?option=classement&rac=&ori=&user=" . $key);   
  10.    $HEIN = preg_match_all("/td align=\"center\" class=content\>([0-9]*) \(([0-9]*)\)/", $html, $matches);  
  11. /*   echo "<pre>";
  12.    print_r($matches);
  13.    echo "</pre>";*/ 
  14.    echo $key . ";" . $matches[1][0] . "\n";  
  15. }  
  16. ?> 


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
LA GLOBULE
Déconnecté
111 111 111 x 111 111 111 = 12 345 678 987 654 321
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
ikoria
Déconnecté
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
LupusMic
Déconnecté
Développeur récurrent, procédural et relationnel.
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 ?
Répondre
Accès rapide :

Remonter Remonter
L'éditeur javascript - CSS - Gentoo - Tutoriaux PHP - Tutoriels PHP - Php