Ciao a tutti

Ho realizzato uni script che fa un cofronto fra due file
il problema è che quando i file hanno migliaia di righe lo scrip si blocca per carenza di ram, infatti se aumento la ram a disposizione a 2gb poi torna a funzionare.

Vorrei cercare di ottimizzarlo o trovare un'altro modo di fargli fare quello che fa ma purtroppo non sono così esperto e volevo chiedervi consiglio su come procedere.

Provo a spiegarvi come funziona lo script:

Leggo un file chiamiamolo "odierno" e lo metto in un file temporaneo che poi lo trasferisce in una variabile "$fcontent1".

$filename1 = $pathlettura1;
$handle1 = fopen($filename1, "r");
$risultatocsv1 = stream_get_contents($handle1);
fclose($handle1);
if (!file_put_contents ($filenameCSV1,$risultatocsv1))
{
echo "Errore nella scrittura del file 1.{file_put_contents '$filenameCSV1'}";
exit ;
}

$handle1 = fopen($filenameCSV1,'r');
$fcontent1 = fread($handle1,filesize($filenameCSV1));
fclose($handle1);
unlink($filenameCSV1);
$fcontent1=str_replace('"','',$fcontent1);
$lines1 = explode("\n",$fcontent1);
Leggo un'altro file chiamiamolo "precedente" e faccio le stesse operazioni.

ora le operazioni che si susseguono sono per il confronto.
il file come potete vedere dal codice è diviso in righe tramite \n.

io prendo una riga del file odierno e la confronto riga per riga con tutto il file precedente

durante il confronto se trova a seconda se trova la riga nel file precedente, se la trova modificata o se la trova uguale scrive una cosa in un array

finito il confronto di una riga del file odierno con tutte quelle del precedente aggiunge la riga in una variabile chiamata output, poi passa alla riga successiva dell'odierno e ripete le operazioni di confronto

una volta che tutto il file odierno è stato confrontato le ultime due operazioni che faccio sono
- scrittura dell'array in una tabella di un db
- scrittura in un file esterno della variabile output
$output= substr($output,0,-1);//pulizia file
$handle = fopen($pathrisultato.'/'.$nomerisultato.'.'.$estensione,'w');
fwrite($handle,$output);
fclose($handle);
chmod($pathrisultato.'/'.$nomerisultato.'.'.$estensione, 0777);


grazie in anticipo a tutti