>  기사  >  백엔드 개발  >  1분 안에 PHP에서 Yield를 사용하는 방법 알아보기(공유)

1분 안에 PHP에서 Yield를 사용하는 방법 알아보기(공유)

慕斯
慕斯앞으로
2021-06-23 14:08:407917검색

아직도 대부분의 사람들이 PHP에서 Yield를 어떻게 사용하는지 모르거나 심지어 Yield가 무엇인지조차 모른다고 생각합니다. . Php에서 발생한 문제를 해결하려면.

yield가 문제를 해결합니다

실행 중인 메모리의 병목 현상을 해결합니다. PHP 프로그램의 변수가 메모리에 저장됩니다. Excel 파일을 읽을 때 메모리가 부족하여 다음이 나타납니다.

Fatal Error: Allowed memory size of xxxxxx bytes

그래서 PHP 최대값 런닝 메모리 설정 : ini_set('memory_limit', '200M')

하지만 5g 정도의 대용량 파일을 읽으면 런닝 메모리가 부담될 수 있으니 Yield를 선택하겠습니다

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 루프의 내용이 메모리에 저장되지 않고 하나씩 소모된다는 것을 알 수 있습니다. 하나.

파일 읽기 예

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분 안에 PHP에서 Yield를 사용하는 방법 알아보기(공유)

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

위 내용은 1분 안에 PHP에서 Yield를 사용하는 방법 알아보기(공유)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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