• User

    Velocizzare "aggiornamento" tabella da file remoto

    Salve a tutti,
    ho un problema con uno script, dovrei fare in modo di accelerarne l'esecuzione perchè così com'è è troppo lento, e non so se si possa velocizzare.....

    In pratica apro un file remoto del tipo:

    INSERT INTO table VALUES (.......)
    

    Questo file mi serve per aggiornare una tabella del mio database, e l'aggiornamento è fatto ogni 24 ore.
    Ci sono altre 4 tabelle identiche (relative ai giorni precedenti) che ad ogni aggiornamento shiftano di una posizione (la 1 diventa la 2, la 2 diventa la 3, la 3 diventa la 4, la 4 viene eliminata dal database, e quella aggiornata diventa la 1).

    Ecco, dovrei trovare un modo abbastanza veloce per fare queste operazioni (lo shift ci mette pochissimo, il problema è il caricamento della nuova tabella).

    Attualmente il mio codice è questo:

    $source="XXX/XX.sql";
        //aggiorna database
        //cancella record da tabella principale
        $data->query("TRUNCATE TABLE x_world");
        //inserisci dati in tabella principale
        $news=fopen($source,"r");
        while (!feof($news) {
            $query = fgets($news, 4096);
            $data->query($query);
        }
        fclose ($news);
    

    per lo shift invece (anche se grossolano come metodo)

    //shifta tabelle    //cancella tabella 4 e copia la 3
        mysql_query("DROP TABLE  ".$table4."") or die(mysql_error());
        mysql_query("CREATE TABLE ".$table4." like ".$table3."") or die(mysql_error());
        mysql_query("INSERT INTO ".$table4." SELECT * FROM ".$table3."") or die(mysql_error());
        //cancella tabella 3 e copia la 2
        mysql_query("DROP TABLE  ".$table3."") or die(mysql_error());
        mysql_query("CREATE TABLE ".$table3." like ".$table2."") or die(mysql_error());
        mysql_query("INSERT INTO ".$table3." SELECT * FROM ".$table2."") or die(mysql_error());
        //cancella tabella 2 e copia la 1
        mysql_query("DROP TABLE  ".$table2."") or die(mysql_error());
        mysql_query("CREATE TABLE ".$table2." like ".$table1."") or die(mysql_error());
        mysql_query("INSERT INTO ".$table2." SELECT * FROM ".$table1."") or die(mysql_error());    
        //cancella tabella 1 e copia la principale
        mysql_query("DROP TABLE  ".$table1."") or die(mysql_error());
        mysql_query("CREATE TABLE ".$table1." like `x_world`") or die(mysql_error());
        mysql_query("INSERT INTO ".$table1." SELECT * FROM `x_world`") or die(mysql_error());
    

    Qualche idea su come velocizzare l'esecuzione di questo script?
    Ah, dimenticavo, il file remoto ha in media 15.000 righe...
    E' bene accetto qualsiasi consiglio, grazie 🙂