Foros del Web » Programando para Internet » PHP »

Cual es mas Optimo?

Estas en el tema de Cual es mas Optimo? en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 02/06/2008, 09:12
 
Fecha de Ingreso: junio-2008
Mensajes: 18
Antigüedad: 15 años, 11 meses
Puntos: 0
Cual es mas Optimo?

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 que 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
  #2 (permalink)  
Antiguo 02/06/2008, 09:40
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Cual es mas Optimo?

obviamente desconoces el valor de la funcion file() ..... que sirve para crear un arreglo de un archivo ... linea por linea.... asi que, NO veo la necesidad de usar fopen/fget etc... para hacer esto mismo....

mmm.... obviamente NO deverias dejar abierto el archivo.... eso no tiene sentido
luego, para ke intentar leer linea por linea.... si ya has creado el arreglo!!!


bueno---- esto es lo ke yo digo, para empezar la optimizacion no se trata de hacer muchas funciones y formas.... sino, usar las funciones mas resumidas y algoritmos simples para resolver cosas.... simples, suerte!

por cierto.... se, que usar funciones dentro de las condicionales for() es mala idea.... deveras, debes inicializar alguna variable que contenga el valor de count() por ejemplo, antes de abrir el for() ..... enserio (de ahi en fuera, genial) se debe a ke POR CADA ITERACION se recuenta.... se reusa, la funcion.... count() o la que utilizes por ejemplo... y eso consume mas memoria....
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 02/06/2008, 10:16
 
Fecha de Ingreso: junio-2008
Mensajes: 18
Antigüedad: 15 años, 11 meses
Puntos: 0
Respuesta: Cual es mas Optimo?

Al usar el metodo file() no es lo mismo que almacenar en un arreglo(Opcion1)?

lo dejar abierto el archivo talvez consume mas memoria, ahi parece que tienes razon.

Lo del count() dentro del for era solo un ejemplo, claro que lo utilizo fuera.


alguna sugerencia de como destruir objtetos?
  #4 (permalink)  
Antiguo 02/06/2008, 10:48
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Cual es mas Optimo?

destruir objetos.... mm, ve al foro de OOP de PHP .....

con respecto a file() si es lo mismo que cargar un archivo en un arreglo... justo la O.1 mi pregunta era.... para que hacerlo manualmente si ya existe una función para ese propósito...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:48.