Este es uno para cualquiera de ustedes usuarios de Doctrine. Tengo un proceso de daemon PHP CLI que comprueba una tabla cada n segundos para encontrar entradas que no se han procesado. Es básicamente un FIFO. De todos modos, siempre excedo la memoria asignada a PHP porque Doctrine no libera sus recursos. Para combatir este problema, proporciona gratis para el objeto de consulta. Parece que no puedo hacer que funcione. Aquí está el código:¿Por qué no funciona el PHP Doctine's free()?
22 print "You are using " . (memory_get_usage()/1024). "\n";
23 $query = Doctrine_Query::create()
24 ->from('SubmissionQueue s')
25 ->where('s.time_acted_on IS NULL')
26 ->orderby('s.time_queued')
27 ->limit(1)
28 ->execute();
29 print $query[0]->time_queued . "\n";
30 $query->free();
¿Alguna idea de lo que estoy haciendo mal?
EDIT: Estoy usando 1.0.3
EDIT: He intentado todas las sugerencias a continuación. Tenía mucha esperanza para unset()
ya que lo tenía allí antes de encontrar free()
.
Aquí hay más del código que posiblemente ayude en cualquier ayuda. Antes de cuestionar la apertura y el cierre de la conexión, será un proceso demoníaco que engendrará hijos y, como he experimentado, la conexión debe ser única.
1 <?php
2
3 require_once('/usr/local/lib/php/Doctrine/lib/Doctrine.php');
4
5 spl_autoload_register(array('Doctrine', 'autoload'));
6
7 $manager = Doctrine_Manager::getInstance();
8 $manager->setAttribute('model_loading','conservative');
9 Doctrine::loadModels('lib/model/master');
10
11 while(1){
12 print "You are using " . intval(memory_get_usage()/1024) . "\n";
13 $manager->connection('********************************************','master');
14 $query = Doctrine_Query::create()
15 ->from('SubmissionQueue s')
16 ->where('s.time_acted_on IS NULL')
17 ->orderby('s.time_queued')
18 ->limit(1)
19 ->execute();
20 print "[" . $query[0]->time_queued . "]\n";
21 $query->free();
22 unset($query);
23 $query = null;
24 $manager->closeConnection(Doctrine_Manager::getInstance()->getConnection('master'));
25 sleep(5);
26 }
27
un ejemplo de salida:
You are using 14949KB
[2008-11-17 13:59:00]
You are using 14978KB
[2008-11-17 13:59:00]
You are using 15007KB
[2008-11-17 13:59:00]
You are using 15035KB
[2008-11-17 13:59:00]
You are using 15064KB
[2008-11-17 13:59:00]
You are using 15093KB
[2008-11-17 13:59:00]
You are using 15121KB
[2008-11-17 13:59:00]
You are using 15150KB
[2008-11-17 13:59:00]
You are using 15179KB
[2008-11-17 13:59:00]
You are using 15207KB
[2008-11-17 13:59:00]
You are using 15236KB
[2008-11-17 13:59:00]
You are using 15265KB
[2008-11-17 13:59:00]
You are using 15293KB
[2008-11-17 13:59:00]
You are using 15322KB
Tenía mucha esperanza para eso. Me había desarmado antes de que descubriera que era libre y luego lo borré apresuradamente. Incluso con eso de nuevo no está funcionando. –