ホームページ  >  記事  >  バックエンド開発  >  1 分でわかる PHP で yield の使い方を学ぶ (シェア)

1 分でわかる PHP で yield の使い方を学ぶ (シェア)

慕斯
慕斯転載
2021-06-23 14:08:407854ブラウズ

php での yield の使用法、ほとんどの人はまだその使い方を知らない、あるいは何をするのかさえ知らないと思います。この記事では、yield に関するいくつかの問題と、Php で遭遇する問題を解決するために yield を使用する方法について説明します。

yieldで解決できる問題

実行メモリのボトルネックを解決 PHPプログラム内の変数はメモリ上に格納されるため、Excelファイルを読み込むとメモリ不足となり以下のようなメッセージが表示されます:

Fatal Error: Allowed memory size of xxxxxx bytes

したがって、PHP の最大実行メモリ設定が設定されます: ini_set('memory_limit', '200M')

ただし、同じくらい大きなファイルを読み取る場合as 5g その時点では、実行メモリに耐えられない可能性があるため、yield

First知人 with 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;}

1 分でわかる PHP で yield の使い方を学ぶ (シェア)

時間は同じです。 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 分でわかる PHP で yield の使い方を学ぶ (シェア)
、時間間隔は 1 秒であるため、yield の例から、内容を保存する最初の例とは異なることがわかります。メモリ内の for ループの 1 つずつ消費されます。

ファイルの読み取り例

txt ファイルを作成して次のように記述します:

第1行
第2行
第3行
第4行
第5行
第6行
第7行
第8行
<?phpfunction readTxt(){
    # code...
    $handle = fopen("./test.txt", &#39;rb&#39;);

    while (feof($handle)===false) {
        # code...
        yield fgets($handle);
    }

    fclose($handle);}foreach (readTxt() as $key => $value) {
    # code...
    sleep(1);
    echo $value;}

php を使用してファイルを読み取ります。ファイルは 1 行ずつ読み取られます
1 分でわかる PHP で yield の使い方を学ぶ (シェア)

推奨学習: 「PHP ビデオ チュートリアル

以上が1 分でわかる PHP で yield の使い方を学ぶ (シェア)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。