hi,你好!欢迎访问本站!登录
本站由简数采集腾讯云宝塔系统阿里云强势驱动
当前位置:首页 - PHP框架 - YII - 正文 请牢记本站网址www.sosophp.cn

yii2 batch和each的区分是什么【yii框架教程】,yii2,batch,each,区别

2019-12-09YII搜搜PHP网50°c
A+ A-

我们的数据库经常都是很巨大的,一次查询的效果集也很大,如许很糟蹋内存,为了下降内存的运用率,我们能够运用yii2的batch和each要领。

为了让人人看的更邃晓,我们模仿一个场景,然后经由过程yii2的debug来检察all与batch/each要领下的内存运用情况。

入手下手预备

我们先竖立一张表,它很简单。

你看到了,它有主键id、会员名username、地点省province,如今它是空的。

然后,我们实行了一个轮回

set_time_limit(0);
for($i=1;$i<=10000;$i++){
    Yii::$app->db->createCommand()->insert("user",[
        'username'=>'abei'.$i,
        'province'=>'北京市'
    ])->execute();
}

实行后,你晓得我们的数据库里有10000条记录了,如今我们入手下手对照。

对照

为了轻易,我们在视图里直接写轮回体,如下面代码,你肯定能够看懂。

$query = new \yii\db\Query();
$query->from('user');
foreach($query->all() as $user){
    echo $user['username'];
    echo "<br/>";
}

效果那?

占领内存 15.306MB

OK,如今入手下手看看batch和each的戏法,究竟有无节约内存。

$query = new \yii\db\Query();
$query->from('user');
foreach($query->batch() as $users){
        foreach($users as $user){
        echo $user['username'];
        echo "<br/>";
    }
}

效果那?

果真,节约了一半的内存。如今仅仅占用了8.077MB

一样的

$query = new \yii\db\Query();
$query->from('user');
foreach($query->each() as $user){
    echo $user['username'];
    echo "<br/>";
}

each的表现也相称不错

效果

当我们碰到须要一次读掏出一切的或是大批量数据的时刻,能够斟酌运用batch和each,这一点点代码的优化帮你省掉了一半的内存。

ki4网,有大批免费的Yii入门教程,迎接人人进修!

以上就是yii2 batch和each的区分是什么的细致内容,更多请关注ki4网别的相干文章!

  选择打赏方式
微信赞助

打赏

QQ钱包

打赏

支付宝赞助

打赏

  选择分享方式
  移步手机端
yii2 batch和each的区分是什么【yii框架教程】,yii2,batch,each,区别

1、打开你手机的二维码扫描APP
2、扫描左则的二维码
3、点击扫描获得的网址
4、可以在手机端阅读此文章