PHP - Cual es mas Optimo?

   
Vista:

Cual es mas Optimo?

Publicado por Carlos (5 intervenciones) el 02/06/2008 17:11:47
Amigos, estoy trabajando con objetos en php y me consume gran cantidad de memoria( mas de la permitida por php.ini) entonces quisiera saber cual de estos metodos consume menos memoria?.
OPCI0ON1
tener en un arreglo las lineas del archivo
aqui tengo el siguiente codigo

// seria un metodo donde retorna un array con las lineas del archivo
$archivo = fopen( $_FILES['archivo']["name"],'r'); // obtengo el archivo
$datos = array(); // arreglo que contendra todas las lineas
$i = 0;
while( $linea=fgets($archivo,1024) ){

$datos[$i] = $linea;
$i ++;
}
fclose($archivo);


// para hacer mis operaciones seria en otro metodo asi
$datos = obtenerDatos( $nombreArchivo ); // utiliza el metodo anterior para obtener las lineas del archivo
for( $i = 0; $i < count( $datos ); $i ++ ){
$linea = $datos[ $i ];

//hacer mis operaciones con la $linea....
}

OPCION 2
mantener abierto el archivo
el codigo seria:

$archivo = fopen($nameArchivo,'r');
while( $linea=fgets($archivo,200) ){

//hacer mis operaciones con la $linea actual ............

}
fclose($archivo);

OPCION 3
leer un linea en cada iteracion

// seria un metodo donde le indico la linea que deseo
$lineaX = 5
$archivo = fopen( $_FILES['archivo']["name"],'r'); // obtengo el archivo
$res;// almacenara la linea que solicite en este caso el 5
$i = 0;
while( $linea=fgets($archivo,1024) && $i < $lineaX ){

$res = $linea;
$i ++;
}
fclose($archivo);


// para hacer mis operaciones seria en otro metodo asi
for( $i = 0; $i < $nroLineasArchivo; $i ++ ){
$linea = obtenerLinea( $i );

//hacer mis operaciones con la $linea actual....
}

Nota..- Les pregunto esto porque estoy importando archivos txt con informacion, que se insertaran a la base de datos y tiene por lo menos 2000 lineas.
Tambien si saben como destruir un objeto para liberar memoria me ayudarian bastante
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder