这是一个适用于你的任何一个学说用户。我有一个PHP CLI守护进程,每隔n秒检查一次表以查找尚未处理的条目。它基本上是一个FIFO。无论如何,我总是超过分配给PHP的内存,因为主干没有释放它的资源。为了解决这个问题,它为查询对象免费提供。我似乎无法让它工作。下面的代码:为什么PHP Doctine的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();
任何想法我做错了吗?
编辑:我使用1.0.3
编辑:我已经尝试了所有的下面的建议。我非常希望unset()
像我在那里发现之前,我发现free()
。
这里有更多的代码可以帮助任何帮助。在对连接的打开和关闭提出质疑之前,它将成为生成子进程的守护进程,并且从我体验到的连接必须是独一无二的。
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
一些样本输出:
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
我真的很希望那个。我甚至在发现有关免费之前就已经解决了,于是我匆匆删除了它。即使它回来,它不工作。 – 2008-11-17 20:31:31