아직도 대부분의 사람들이 PHP에서 Yield를 어떻게 사용하는지 모르거나 심지어 Yield가 무엇인지조차 모른다고 생각합니다. . Php에서 발생한 문제를 해결하려면.
실행 중인 메모리의 병목 현상을 해결합니다. PHP 프로그램의 변수가 메모리에 저장됩니다. Excel 파일을 읽을 때 메모리가 부족하여 다음이 나타납니다.
Fatal Error: Allowed memory size of xxxxxx bytes
그래서 PHP 최대값 런닝 메모리 설정 : ini_set('memory_limit', '200M')
하지만 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 루프의 내용이 메모리에 저장되지 않고 하나씩 소모된다는 것을 알 수 있습니다. 하나.
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로 파일을 읽으면 한 줄씩 읽습니다.
추천 학습: "PHP 비디오 튜토리얼"
위 내용은 1분 안에 PHP에서 Yield를 사용하는 방법 알아보기(공유)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!