Bonjour à tous,

J'ai actuellement ce code qui me permet de faire les historiques de joueurs de mon site... sauf qu'il prend beaucoup de temps

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
set_time_limit(0);
 
$liste_serveur = array();
$sql = mysql_query("SELECT place, numero, name FROM infos ORDER BY place ASC");
while ($data = mysql_fetch_object($sql))
$liste_serveur[] = $data->name;
 
if ($_GET["type"] == "alliances") {
 
foreach ($liste_serveur AS $nom_mondes) {
 
mysql_query('INSERT INTO '.$nom_mondes.'_player_history (player_id,alliance_id,rank,date,points,villes,player_kills_all,player_kills_att,player_kills_def,rank_pka,rank_pkat,rank_pkd) 
SELECT
p.id,
p.alliance_id,
p.rank,
NOW(),
p.points,
p.towns,
pkay.points,
pkaw.points,
pkaz.points,
pkay.rank,
pkaw.rank,
pkaz.rank
FROM '.$nom_mondes.'_players p
JOIN '.$nom_mondes.'_player_kills_all pkay ON (p.id=pkay.player_id)
JOIN '.$nom_mondes.'_player_kills_att pkaw ON (p.id=pkaw.player_id)
JOIN '.$nom_mondes.'_player_kills_def pkaz ON (p.id=pkaz.player_id)') or die ('Erreur : '.mysql_error() );
 
mysql_query('DELETE FROM '.$nom_mondes.'_player_history WHERE `date` < CURRENT_DATE - INTERVAL 62 DAY') or die (mysql_error());
}
La table infos contient les 40 mondes de jeu

Ne me parlez-pas de la construction des tables ^^ c'est fait comme ça à cause de la fonction LOAD DATA INFILE qui charge mes données.

Est-il possible d'augmenter la rapidité du code ? Ou alors, est-il plus rapide de le faire a partir des fichiers .txt qui sont chargés chaque heure ? Merci d'avance