php如何手动释放内存
本帖最后由 mahone 于 2010-6-11 16:07 编辑public function generate_large_data()
{
$arr = array(
'username'=>'jakcy',
'password'=>'123456',
'email'=>'jacky@json.org',
'create_time'=>'');
for ($i=0; $i<100000; $i++)
{
$tmp = $arr;
$tmp['username'] = $tmp['username'].'_'.$i;
$tmp['password'] = $tmp['password'].'_'.$i;
$tmp['email'] = $tmp['email'].'_'.$i;
$tmp['create_time'] = time();
$this->db->insert('test111', $tmp);
$tmp = null;
echo 'insert user = '.$i.'<br/>';
}
}我写了这样一串代码,我的php,memory_limit = 24M
于是在i到7w1左右的时候内存爆了……
Fatal error:Allowed memory size of 25165824 bytes exhausted (tried to allocate 1008 bytes) in E:\code\codeigniter\trunk\src\system\database\drivers\mysql\mysql_driver.php on line 1355
我知道应该是内存没释放,但是不知道怎么释放
注释的地方我用unset释放,不行
我这样释放$tmp = null;,也不行
高手教我,到底该怎么释放内存。 PHP 无法手动释放内存,你 unset 了,也要等 GC 来自动回收,这个不是 C语言, 内存是 PHP 来管理的。
这个只能是加大内存,或者改用其他内存占用小的算法。 回复 2# Hex
这样啊,好,谢谢,悲剧了…… 我有个提议:
如果是处理中间数据,可以先按行写入输出文件,然后再在另外的程序中按行读入处理。
不过,我碰到用ZIP无法读入一个才100M的数据文件进行压缩的问题,不知HEX大有没招?
页:
[1]