Ciao a tutti, da giorni ho una tabella che è cresciuta in modo esponenziale.

Contiene 12.850.000 record ed è composta da un solo campo di tipo text.

Ho creato un ciclo while che effettua delle operazioni ad ogni record letto.

Il grave problema è che ad un certo punto ( ogni volta su record diversi quindi non si può impurate ad un record sporco o a specifiche anomalie del tracciato record) senza segnalare errori esce dal ciclo anticipatamente lasciando così a metà l'opera!

E' come se non ce la facesse con le risorse del server ad eseguire tutto il ciclo.

questo lo script:
Codice PHP:
$query_rst_schede "SELECT * FROM appo_1_cartelle ";
$dati=mysqli_query($link1$query_rst_schedeMYSQLI_USE_RESULT) or die("Errore Query - 1");

while(
$array=mysqli_fetch_array($dati))    {
        
$carx_codut2  addslashes(substr($array['campo'],3,2));
        
$carx_cf addslashes(substr($array['campo'],81,16));
        
$carx_codprov addslashes(substr($array['campo'],58,3));
        
$carx_codcom addslashes(substr($array['campo'],61,3));
        
$carx_emisced addslashes(substr($array['campo'],64,7));

        
$query_rst_anagr "
        SELECT anagrafica.ana_codut2, anagrafica.ana_cf, anagrafica.IDana
        FROM anagrafica
        WHERE anagrafica.ana_codut2 =  '
$carx_codut2
        AND anagrafica.ana_cf = '
$carx_cf'
         "
;
        
$dati_anagr=mysqli_query($link$query_rst_anagr) or die("Errore Query - conc");
        
$array_anagr=mysqli_fetch_assoc($dati_anagr);
        
$IDana $array_anagr['IDana'];
        
mysqli_free_result($dati_anagr);
    
    
        
$query_rst_carte "
        SELECT cartelle.IDCart, cartelle.car_codprov, cartelle.car_codcom, cartelle.car_emisced
        FROM cartelle
        WHERE cartelle.car_codprov = '
$carx_codprov'
        AND cartelle.car_codcom = '
$carx_codcom
        AND cartelle.car_emisced = '
$carx_emisced'
         "
;
        
$dati_carte=mysqli_query($link$query_rst_carte) or die("Errore Query - carte");
        
$array_carte=mysqli_fetch_assoc($dati_carte);
        
$IDCart $array_carte['IDCart'];
        
mysqli_free_result($dati_carte);

        if(
$IDana){        
            if(
$IDCart){

                
$query_rst_re1 mysqli_query($link"
                UPDATE cartelle 
                SET
                car_host = '1'
                WHERE cartelle.car_codprov = '
$carx_codprov'
                AND cartelle.car_codcom = '
$carx_codcom
                AND cartelle.car_emisced = '
$carx_emisced'
                "
) or die("Errore query UPDATE cartelle filtro ");

            }
        }    
    }
}
mysqli_free_result($dati); 
Ho usato MYSQLI_USE_RESULT perchè senza non riusciva a caricare la query.

Importante!!! Chiaramente è una procedura batch eseguita da linea di comando DOS.
- Testata su Windows Server 2003 e 2008 con MySql commerciale Enterprise e PHP 5.3.
- Tabella testata sia come MyIsam che Innodb.
- Le tabelle sono tutte indicizzate.
Tutto con lo stesso risultato anomalo.

Grazie anticipatamente. Attendo con ansia