php での yield の使用法、ほとんどの人はまだその使い方を知らない、あるいは何をするのかさえ知らないと思います。この記事では、yield に関するいくつかの問題と、Php で遭遇する問題を解決するために yield を使用する方法について説明します。
実行メモリのボトルネックを解決 PHPプログラム内の変数はメモリ上に格納されるため、Excelファイルを読み込むとメモリ不足となり以下のようなメッセージが表示されます:
Fatal Error: Allowed memory size of xxxxxx bytes
したがって、PHP の最大実行メモリ設定が設定されます: ini_set('memory_limit', '200M')
ただし、同じくらい大きなファイルを読み取る場合as 5g その時点では、実行メモリに耐えられない可能性があるため、yield
を選択して実行します:
<?phpfunction createRange($number){ $data = []; for($i=0;$i<$number;$i++){ $data[] = time(); } return $data;}$data =createRange(10);foreach($data as $value){ sleep(1);//这里停顿1秒,我们后续有用 echo $value.PHP_EOL;}
時間は同じです。 yield が使用される場合:
<?phpfunction createRange($number){ for($i=0;$i<$number;$i++){ yield time(); }}$data =createRange(10);foreach($data as $value){ sleep(1);//这里停顿1秒,我们后续有用 echo $value.PHP_EOL;}
、時間間隔は 1 秒であるため、yield の例から、内容を保存する最初の例とは異なることがわかります。メモリ内の for ループの 1 つずつ消費されます。
txt ファイルを作成して次のように記述します:
第1行 第2行 第3行 第4行 第5行 第6行 第7行 第8行
<?phpfunction readTxt(){ # code... $handle = fopen("./test.txt", 'rb'); while (feof($handle)===false) { # code... yield fgets($handle); } fclose($handle);}foreach (readTxt() as $key => $value) { # code... sleep(1); echo $value;}
php を使用してファイルを読み取ります。ファイルは 1 行ずつ読み取られます
推奨学習: 「PHP ビデオ チュートリアル 」
以上が1 分でわかる PHP で yield の使い方を学ぶ (シェア)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。