[symfony-es] No puedo con Fatal error: Allowed memory size of X bytes exhausted.....

721 views
Skip to first unread message

hernan zapata

unread,
Feb 26, 2010, 10:55:33 AM2/26/10
to symfo...@googlegroups.com
Cordial saludo comunidad
Resulta que estoy empezando con symfony siguiendo al pie el manual de jobeet, estoy trabajando con symfony 1.3.2.
Me he encontrado con dificultades que he logrado resolver, pero este error no lo he podido solucionar y ya le he perdido un dia. He mirado en este foro y en mucho otros mas y todos dicen lo mismo lo cual lo he hecho una y otra vez. Dicen que modifique el php.ini y le aumente memory_limit, el cual lo he ensallado hasta 1024... se lo he cambiado a los tres php.ini que tiene php5, que estan en la carpeta apache2, cgi y cli, (aunque el php.ini que aparece en el phpinfo(); es el de la carpeta etc/php5/apache2), y despues obviamente reinicio el apache2. Tambien a cada script donde sale el problema le he agregado la siguiente linea ini_set('memory_limit','64M');. Necesito desarrollar una aplicacion, y estoy pegado en esto, agradezco su ayuda

Este es el error que  sale
Fatal error: Allowed memory size of 1073741824 bytes exhausted (tried to allocate 32 bytes) in /home/sfprojects/jobeet4/lib/form/doctrine/base/BasePersonaForm.class.php on line 31

En otra ocasion salio en este otro
Fatal error: Allowed memory size of 10485760 bytes exhausted (tried to allocate 53 bytes) in /home/sfprojects/jobeet4/lib/vendor/symfony/lib/validator/sfValidatorBase.class.php on line 61

--
Hernan Zapata Alzate
Estudiante de Ingeniería de Sistemas
Universidad Nacional de Medellín

Roberto Moreno P.

unread,
Feb 26, 2010, 10:58:06 AM2/26/10
to symfo...@googlegroups.com
Estimado,

Revise cuanto tiempo se esta demorando en ejecutar el script y cuanto
tiempo de ejecucion tiene definido en el php.ini

Saludos

--
Atte. Roberto Andrés Moreno Pérez
Coordinador Nacional FLISoL Chile 2010
Estudiante Ingeniería Civil en Informática
Universidad Técnica Federico Santa María Campus Santiago

Jose Antonio Pio Gil

unread,
Feb 26, 2010, 10:59:37 AM2/26/10
to symfo...@googlegroups.com
Es muy posible que tengas un error en el código o que estés tratando de hidratar muchos objetos de la base de datos en la misma ejecución de PHP,

que hay en ésta línea:
/home/sfprojects/jobeet4/lib/form/doctrine/base/BasePersonaForm.class.php on line 31

JAP

El 26 de febrero de 2010 16:55, hernan zapata <haza...@gmail.com> escribió:
73741

hernan zapata

unread,
Feb 26, 2010, 11:09:01 AM2/26/10
to symfo...@googlegroups.com
Hola Roberto gracias por responder.
Mira asi esta en el php.ini
;;;;;;;;;;;;;;;;;;;
; Resource Limits ;
;;;;;;;;;;;;;;;;;;;

max_execution_time = 30     ; Maximum execution time of each script, in seconds
max_input_time = 60 ; Maximum amount of time each script may spend parsing request data
;max_input_nesting_level = 64 ; Maximum input variable nesting level
memory_limit = 64M      ; Maximum amount of memory a script may consume (16MB)


2010/2/26 Roberto Moreno P. <rampm...@gmail.com>

--
Has recibido este mensaje porque estás suscrito al grupo "symfony-es" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a symfo...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a symfony-es+...@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/symfony-es?hl=es.

hernan zapata

unread,
Feb 26, 2010, 11:16:39 AM2/26/10
to symfo...@googlegroups.com
Hola Jose gracias por responder. Esta clase la genero el symfony y yo no lo he modificado. Esto sale cuando trato de ingresar un registro, en la tabla persona, que tiene un clave primaria que se llama rut tipo character varying, y nombre tipo character. Asi aparece en el archivo schema.yaml

Persona:
  connection: doctrine
  tableName: persona
  columns:
    rut:
      type: string()
      fixed: false
      unsigned: false
      primary: true
    nombre:
      type: string()
      fixed: false
      unsigned: false
      notnull: false
      primary: false
  relations:
    Trabaja:
      local: rut
      foreign: rut
      type: many

Este es el codigo de la clase donde sale el error, y ahi te señalo la linea

abstract class BasePersonaForm extends BaseFormDoctrine
{
  public function setup()
  {
    $this->setWidgets(array(
      'rut'    => new sfWidgetFormInputHidden(),
      'nombre' => new sfWidgetFormTextarea(),
    ));
    $this->setValidators(array(
      'rut'    => new sfValidatorDoctrineChoice(array('model' => $this->getModelName(), 'column' => 'rut', 'required' => false)),
      'nombre' => new sfValidatorString(array('required' => false)),
    ));

    $this->widgetSchema->setNameFormat('persona[%s]');

/*>>>>>>>>>ESTA ES LA LINEA 31<<<<<<<<*/
   $this->errorSchema = new sfValidatorErrorSchema($this->validatorSchema);

    $this->setupInheritance();

    parent::setup();
  }

  public function getModelName()
  {
    return 'Persona';
  }

}

Muchas gracias por tu colaboracion

2010/2/26 Jose Antonio Pio Gil <jose...@latizana.com>

--
Has recibido este mensaje porque estás suscrito al grupo "symfony-es" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a symfo...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a symfony-es+...@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/symfony-es?hl=es.

Jose Antonio Pio Gil

unread,
Feb 26, 2010, 11:24:59 AM2/26/10
to symfo...@googlegroups.com
Eso lo has hecho así porque ya tienes la DB con el campo "rut" o simplemente llamastes así a tu primaryKey de la tabla?

hernan zapata

unread,
Feb 26, 2010, 11:32:35 AM2/26/10
to symfo...@googlegroups.com
Hola Jose. En la DB en la tabla persona, tengo un campo rut, el cual lo hice la clave primaria. Despues conecte el doctrine con esta base de datos, y este me genero el schema.

Jose Antonio Pio Gil

unread,
Feb 26, 2010, 11:39:57 AM2/26/10
to symfo...@googlegroups.com
Lo defines como tipo string:

rut:
      type: string()
      fixed: false
      unsigned: false
      primary: true

es un integer o un string? es tu id auto incremental?

hernan zapata

unread,
Feb 26, 2010, 11:46:23 AM2/26/10
to symfo...@googlegroups.com
Realmente voy a redefinir esto, porque me entro la duda, lo voy a poner incremental integer. Esta era una base de datos que habia en el postgres y hice la conexion... Lo voy a cambiar y te cuento para ver si este es el problema...
Y si, el campo rut es un string variable, y es la clave primaria de la tabla persona...

Marcos Matamala

unread,
Feb 26, 2010, 11:49:35 AM2/26/10
to symfo...@googlegroups.com
El día 26 de febrero de 2010 13:46, hernan zapata <haza...@gmail.com> escribió:
> Realmente voy a redefinir esto, porque me entro la duda, lo voy a poner
> incremental integer. Esta era una base de datos que habia en el postgres y
> hice la conexion... Lo voy a cambiar y te cuento para ver si este es el
> problema...
> Y si, el campo rut es un string variable, y es la clave primaria de la tabla
> persona...
>

Intenta con persona(id bigserial primary key, rut bigint unique not
null, digito_verificador varchar(1));

saludos.-

--
Marcos Matamala Fernández:
Analista Programador
Teléfono: 95962482

manunoly

unread,
Feb 26, 2010, 2:45:24 PM2/26/10
to symfony-es
Hola pues retomando el tema este que se mencionaba desde el inicio...
Fatal error*: Allowed memory size of 1073741824 bytes exhausted (tried
to
allocate 32 bytes) in *
pregunto si ante este tipo de error existe alguna forma de manejarlo
desde el codigo como si fuese una exepcion de PHP o algo asi..
independientemente de los motivos que lo pueda causar... digase el
script se tarda mucho.. se crean muchos objetos.. no esta optimizado
el codigo etc...
en mi caso les comparto lo que me sucedio .. estaba haciendo un
procesamiento con ficheros que en ocasiones eran muchos.. se creaban
grandes cantidades de objetos... y en ocasiones me pasó esto.. el
codigo lo optimice lo mas posible.. evite trabajar con objetos de
mas.. de hacer la menor cantidad de transacciones a la bd... etc.. al
final la solucion que encontre consistia en aumentar la utilizacion de
memoria para php en el php.ini.. pero no me gustaba tenerlo fijo ..
asi que la solucion que tengo es cuando llamo a la accion en ese
momento y solamente ahi aumeto la utilizacion de memoria con
ini_set('memory_limit','124M');
asi que el tema central que pregunto es como manejar este
error...Allowed memory size independientemente de todo..
Saludos..

Jose Antonio Pio Gil

unread,
Feb 27, 2010, 4:08:15 AM2/27/10
to symfo...@googlegroups.com
PHP tiene algunos problemas con el manejo de memoria desde hace tiempo, es bastante díficil manejarlos y sobre todo corregirlos, por mi experieicnia y por lo que he visto las soluciones son:

Optimizar el script al máximo
Acabar pronto los scripts
Usar la menor cantidad de Objetos
o Usar PHP 5.3

En mi caso, me he encontrado pocas veces con ese problema en distintas aplicaciones, pero por las dudas ya estoy usando PHP 5.3

un saludo
JAP


hernan zapata

unread,
Feb 28, 2010, 10:32:11 AM2/28/10
to symfo...@googlegroups.com
Gracias por las recomendaciones, al parecer no es algo fácil de lidiar, pues no se soluciona directamente, pues lo que yo he hecho es modificar el php.ini y aumentar en el script la memoria tambien en caso de que se necesite, pero no ha funcionado. Tengo que seguir lidiando con esto para ver entonces y seguir sus recomendaciones porque no sabría mas que hacer..


2010/2/27 Jose Antonio Pio Gil <jose...@latizana.com>

Odair De La Hoz

unread,
Mar 2, 2010, 5:50:59 PM3/2/10
to symfo...@googlegroups.com
Yo opino lo mismo. Estás consumiendo mas memoria de la necesaria, posiblemente es un problema de programación.
Revisa el trabajo con los objetos. en fin ---

 
El día 26/02/10, Jose Antonio Pio Gil <jose...@latizana.com> escribió:

--
Has recibido este mensaje porque estás suscrito al grupo "symfony-es" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a symfo...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a symfony-es+...@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/symfony-es?hl=es.



--
Odair De La Hoz Rojas

Bucaramanga, Colombia.
Freelance - Web Developer
http://www.construxzion.net

¿¿¿ Quieres aprender Mandarín ???
http://www.chino-china.com
Reply all
Reply to author
Forward
0 new messages