preg_match_all() et charge du serveur distant...
salut à tous.
Je suis un petit nouveau en php, et un copain ma pondu un script de ce genre:
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.
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.
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.
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.
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.
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 ^^
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 ^^
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'ailleurs, quels sont les messages d'erreur de PHP lorsqu'il échoue ?
Accès rapide :
Remonter 

