Foros del Web » Programando para Internet » PHP »

Es verdad esto?

Estas en el tema de Es verdad esto? en el foro de PHP en Foros del Web. Hola amigos, tengo este codigo @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: Ver original for ( $CurrentPage = 1 ; $CurrentPage <= $cantidad_paginas ; $CurrentPage ++ ) { ...
  #1 (permalink)  
Antiguo 07/04/2011, 07:10
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 2 meses
Puntos: 288
Es verdad esto?

Hola amigos, tengo este codigo

Código PHP:
Ver original
  1. for($CurrentPage=1;$CurrentPage<= $cantidad_paginas;$CurrentPage++){
  2.     $users = Users::todosLosUsuarios($CurrentPage, $ItemsPerPage);
  3.  
  4.     while($user = $users->iterate()){
  5.         $name  = $user->getName();
  6.                 $email = $user->getEmail();
  7.         $city  = $user->getCity();
  8.  
  9.                 $file_content = $d.$name.$d .$s. $d.$email.$d .$s. $d.$city.$d .$eol;
  10.  
  11.             echo $file_content;
  12.     }
  13.  
  14. }

Lo que hace es simple: me trae una lista de todos los usuarios y armo una cadena
para exportarla a .csv

La cuestion es que si tengo una tabla con mas de 15000 usuarios
y cargo en memoria todos los usuarios, me da un error de memoria insuficiente,
entonces se creo esta solucion: HACERLO DE FORMA PAGINADA.

mi duda es: en que momento se libera la memoria (si es que lo hace) y como?
  #2 (permalink)  
Antiguo 07/04/2011, 07:21
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Es verdad esto?

la memoria se libera en el momento en que php se da cuenta que ya no se utiliza...

¿como? buena pregunta, pues eso lo hace internamente y no hay forma de provocarlo mediante código...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 07/04/2011, 07:40
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 2 meses
Puntos: 288
Respuesta: Es verdad esto?

esta bien, no iba tan al nucleo de php, sino en que parte del codigo
php dice : bueno a vos ya no te uso y que venga el siguiente manteniendo
la misma cadena?

como libero la memoria si la cadena va creciendo igual?
  #4 (permalink)  
Antiguo 07/04/2011, 07:44
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Es verdad esto?

yo no creo que el problema sea la cadena, quizá sea otra cosa... ¿mostrarías el mensaje de error completo que recibes?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 07/04/2011, 07:48
 
Fecha de Ingreso: enero-2005
Ubicación: Salta - Argentina
Mensajes: 322
Antigüedad: 19 años, 3 meses
Puntos: 7
Respuesta: Es verdad esto?

Estimado,

$file_content es la variable que está en memoria casualmente, todas las variables se guardan en memoria...

Para liberar la memoria, con algo como:

Código PHP:
<?
$file_content
="";
unset(
$file_content);
?>
De esa forma (y cuando pagines) podrás volver a reutilizarla

Espero que te sirva....
  #6 (permalink)  
Antiguo 07/04/2011, 07:54
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Es verdad esto?

Cita:
Iniciado por Netyco Ver Mensaje
$file_content es la variable que está en memoria casualmente, todas las variables se guardan en memoria...
claro, pero aquí el detalle que no ves es que en ningún momento se esta concatenando en dicha variable por cada vuelta del ciclo, entonces... el problema no es de la cadena, pues se hace solo una asignación por cada vuelta...

bueno, eso es lo que pienso, porque yo jamás me he topado con errores de este tipo, y si lo vemos así seguro que el problema viene de otro lado...

¿como saber sin el mensaje de error preciso?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 07/04/2011, 07:57
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 2 meses
Puntos: 288
Respuesta: Es verdad esto?

mmm, esto funciona ya se arreglo el problema y no me das mas el error de memoria insuficiente,
lo que a mi me interesa es entender en que momento hace lo que dice netyco,
por que el resultado es un .csv inmenso y no tengo que ir pisando datos , sino agregarle

Etiquetas: Ninguno
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 06:35.