>  기사  >  백엔드 개발  >  PHP에서 Yield의 사용법은 무엇입니까

PHP에서 Yield의 사용법은 무엇입니까

醉折花枝作酒筹
醉折花枝作酒筹앞으로
2021-05-27 17:35:462566검색

이 글에서는 PHP에서의 Yield 사용법을 소개하겠습니다. 도움이 필요한 친구들이 모두 참고할 수 있기를 바랍니다.

PHP에서 Yield의 사용법은 무엇입니까

예전에 PHP 자체에도 코루틴이 있다는 이야기를 들은 적이 있어서 찾아보고 알게 되었습니다.

Demo가 내 github 노트에 업로드되었습니다

yield 문제가 해결되었습니다

실행 메모리의 병목 현상을 해결합니다. PHP 프로그램의 변수가 메모리에 저장됩니다. :

Fatal Error: Allowed memory size of xxxxxx bytes
.

그래서 우리는 PHP의 최대 실행 메모리 설정을 지정하겠습니다: ini_set('memory_limit', '200M')

하지만 5g만큼 큰 파일을 읽을 때 실행 메모리가 너무 많아질 수 있으므로 Yield를 선택하겠습니다

Yield와의 첫 만남

런:

<?php
function 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;
}

PHP에서 Yield의 사용법은 무엇입니까

시간은 같습니다. Yield를 사용하는 경우:

<?php

function createRange($number){
    for($i=0;$i<$number;$i++){
        yield time();
    }
}
$data =createRange(10);
foreach($data as $value){
    sleep(1);//这里停顿1秒,我们后续有用
    echo $value.PHP_EOL;
}

PHP에서 Yield의 사용법은 무엇입니까

시간 간격은 1초이므로 Yield의 예를 통해 첫 번째 예처럼 for 루프의 내용이 메모리에 저장되지 않고 하나씩 소모된다는 것을 알 수 있습니다. 하나.

파일 읽기 예

txt 파일을 만들고 다음과 같이 씁니다.

第1行
第2行
第3行
第4行
第5行
第6行
第7行
第8行
<?php
function 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를 사용하여 파일을 한 줄씩 읽습니다.

PHP에서 Yield의 사용법은 무엇입니까

이 시점에서 여러분은 아마도 Yield의 역할을 알고 있을 것입니다. 그리고 더 깊이 들어가 보겠습니다

추천 학습:php 비디오 튜토리얼

위 내용은 PHP에서 Yield의 사용법은 무엇입니까의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 csdn.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제