Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 17 su 17

Discussione: Problemi ciclo while

  1. #11
    Originariamente inviato da Fred_88
    error_reporting settato su 6135 cosa comporta?
    Cercando su google sembrerebbe E_ALL ^ E_NOTICE, quindi i Notice disabilitati


    Per il nome file io comunque intendevo per il wget

  2. #12

    Re: Problemi ciclo while

    Originariamente inviato da Fred_88
    Ho inserito tanti commenti per permettervi di capire a cosa serve lo script..
    Commenti del tipo:
    Codice PHP:
            #chiusura del file
            
    fclose($handle); 
    sono assolutamente inutili e forvianti per non dire dannosi.

  3. #13
    Codice PHP:
    <?php
    error_reporting
    (E_ALL);
    #dati del db
    $hostname="censured";
    $username="censured";
    $password="censured";
    $database="censured";
    #connessione al db
    $db_conn=@mysql_connect($hostname,$username,$password) OR die("Impossibile stabilire il collegamento!");
    $db_select=@mysql_select_db($database,$db_conn) OR die("Impossibile selezionare il database!");
    #query per selezionare i map.sql da importare
    $sql="SELECT * FROM `server`";
    $result=@mysql_query($sql) OR die("Impossibile selezionare i record dalla tabella [b]server[/b]");
    #ciclo while
    while ($row=mysql_fetch_assoc($result)) {
        
    #importazione del map.sql
        
    system("wget [url]http://[/url]{$row['indirizzo']}/map.sql -O maps/{$row['abbreviazione']}.sql");
        
    #controllo sulla riuscita dell'operazione
        
    if (file_exists("maps/{$row['abbreviazione']}.sql") AND filesize("maps/{$row['abbreviazione']}.sql")) {
            
    #apertura del map.sql in lettura e scrittura
            
    $handle=fopen("maps/{$row['abbreviazione']}.sql","r");
            
    #lettura dei contenuti del map.sql
            
    $contents=fread($handle,filesize("maps/{$row['abbreviazione']}.sql"));
            
    #modifica della tabella di destinazione
            
    $new=str_replace("INSERT INTO `x_world`","INSERT INTO `{$row['abbreviazione']}_world`",$contents);
            
    #chiusura del file
            
    fclose($handle);
            
    #cancellazione del file map.sql temporaneo
            
    unlink("maps/{$row['abbreviazione']}.sql");
            
    #creazione del nuovo map.sql
            
    $handle=fopen("maps/{$row['abbreviazione']}.sql","w");
            
    fwrite($handle,$new);
            
    #chiusura del file
            
    fclose($handle);
            
    #svuotamento della tabella di destinazione
            
    $sql"TRUNCATE TABLE `{$row['abbreviazione']}_world`";
            
    $result=@mysql_query($sql) OR die("Impossibile svuotare la tabella!");
            
    #importazione del map.sql
            
    system("mysql --host=$hostname --user=$username --password=$password --default-character-set=utf8 $database < maps/{$row['abbreviazione']}p.sql");
            echo 
    "Aggiornamento del [b]{$row['indirizzo']}[/b] riuscito!";
        } else { 
            echo 
    "Il download è fallito, oppure il file map.sql era vuoto!";
        }
    }
    ?>
    e come al solito nella cartella maps c'è solamente it2.sql

    p.s.: è possibile che il php.ini avendo impostato error_reporting a 6135 non mi mostri i messaggi d'errore per il supero della memoria disponibile per ogni pagina?
    calcolate che ogni map.sql è in media 3.5MB...

  4. #14
    A me l'errore sembra palese però forse ho un abbaglio:

    Codice PHP:
           $result=@mysql_query($sql) OR die("Impossibile svuotare la tabella!"); 
    $result lo usi nel mysql_fetch_assoc() e questa riga te lo azzera, ergo ti farà solo un ciclo.

    Togli il $result (che tanto non lo usi):

    Codice PHP:
           mysql_query($sql) OR die("Impossibile svuotare la tabella!"); 
    P.S.: sconsiglio sempre di usare la @ perché non ti fa vedere gli errori, anche quelli fatali!

  5. #15

  6. #16
    porca la vacca boia che demente che sono.. ç_ç

    grazie mille ntd! *__*

  7. #17
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    cioa ho letto il tuo codice e mi sono permesso di ottimizzarlo un pò..
    spero ti possa essere di aiuto

    Codice PHP:
    <?php
    error_reporting
    (E_ALL);
    #dati del db
    $hostname="censured";
    $username="censured";
    $password="censured";
    $database="censured";

    $db_conn=@mysql_connect($hostname,$username,$password) OR die("Impossibile stabilire il collegamento!");
    $db_select=@mysql_select_db($database,$db_conn) OR die("Impossibile selezionare il database!");

    $result=mysql_query("SELECT * FROM `server`") OR die("Impossibile selezionare i record dalla tabella [b]server[/b]");
    #ciclo while
    while ($row=mysql_fetch_assoc($result)) {
        
    system("wget [url="http://"][url]http://[/url][/url]{$row['indirizzo']}/map.sql -O maps/{$row['abbreviazione']}.sql");
        
    if (is_file("maps/{$row['abbreviazione']}.sql") AND filesize("maps/{$row['abbreviazione']}.sql")) {
            
    $new=str_replace("INSERT INTO `x_world`","INSERT INTO `{$row['abbreviazione']}_world`",file_get_contents("maps/{$row['abbreviazione']}.sql"));
            
    unlink("maps/{$row['abbreviazione']}.sql");
            
            
    // con php5 usa questa riga per scrivere sul file
            
    $write_new=file_put_contents("maps/{$row['abbreviazione']}.sql",$new)
            
    // sennò comentala e decommenta le 3 vecchie
            /*
            $handle=fopen("maps/{$row['abbreviazione']}.sql","w");
            fwrite($handle,$new);
            fclose($handle);
            */
            
    mysql_query("TRUNCATE TABLE `{$row['abbreviazione']}_world`") OR die("Impossibile svuotare la tabella!");

            
    system("mysql --host=$hostname --user=$username --password=$password --default-character-set=utf8 $database < maps/{$row['abbreviazione']}p.sql");
            echo 
    "Aggiornamento del [b]{$row['indirizzo']}[/b] riuscito!";
        } else {
            echo 
    "Il download è fallito, oppure il file map.sql era vuoto!";
        }
    }
    ?>
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.