Augmenter la rapiditié de l'insertion
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 :aie:
Code:
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