私たちのデータベースは非常に大きく、クエリの結果セットも非常に大きいことが多いため、メモリを無駄に消費します。メモリ使用量を削減するために、yii2 のバッチと各メソッドを使用できます。 。
誰もがより明確に確認できるように、シナリオをシミュレートし、yii2 のデバッグを使用して、all メソッドとバッチ/各メソッドでのメモリ使用量を表示します。
準備の開始
最初にテーブルを作成します。これは非常に簡単です。
ご覧のとおり、主キー ID、メンバー名、ユーザー名、および州が含まれていますが、今は空になっています。
次に、ループを実行しました
set_time_limit(0); for($i=1;$i<=10000;$i++){ Yii::$app->db->createCommand()->insert("user",[ 'username'=>'abei'.$i, 'province'=>'北京市' ])->execute(); }
実行後、データベースに 10,000 件のレコードがあることがわかり、比較を開始します。
比較
便宜上、次のコードのようにループ本体をビューに直接記述します。確実に理解できると思います。
rreeee結果は?
占有メモリ 15.306MB
OK、バッチと各メモリの節約のコツを見てみましょう。
rreeee結果は?
# 案の定、メモリの半分が節約されました。今では 8.077MB しか消費しません
同じ
$query = new \yii\db\Query(); $query->from('user'); foreach($query->all() as $user){ echo $user['username']; echo "<br/>"; }
それぞれのパフォーマンスも非常に優れています
結果
すべてのデータまたは大きなバッチのデータを一度に読み取る必要がある場合は、batch と each の使用を検討できます。この少しのコード最適化により、メモリの半分を節約できます。
PHP 中国語 Web サイトには、無料の Yii 入門チュートリアル が多数あり、誰でも学習することができます。
以上がyii2 バッチとそれぞれの違いは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。