+ -
当前位置:首页 → 问答吧 → 内存益处如何解决

内存益处如何解决

时间:2011-11-08

来源:互联网



public function tags(){
                $FTags = M("Tags");
                $count = $FTags->count("id");
                $limit = 50000;
                $list = ceil($count/$limit);
               
                for($i=0;$i<$list;$i++){
                        $tags = array();
                        $ids = array();
                        $tags = $FTags->limit($i*$limit.",".$limit)->findAll();
                        foreach($tags as $k=>$v){
                                $tags[$k]['url'] = setToUrl($v['tags']);
                                $ids[] = $v['id'];
                        }                       
                        $FTags->where(array("id"=>array("in",$ids)))->delete();
                       
                        $FTags->addAll($tags);
                        unset($tags,$ids);
                       
                }
                echo "URL更新完成";
        }

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 5036049 bytes) in D:\www\shop.com\ThinkPHP\Lib\Think\Db\Db.class.php on line 344
这个表的数据量为150百万左右。要更新URL :执行上面这段程序一段时间后 报错。(能做一部分循环,i执行到16左右的时候提示内存益处了)

作者: zhongks   发布时间: 2011-11-08

像这种,用SQL由MySQL执行会好些。

作者: deeka   发布时间: 2011-11-08