이 글에서는 PHP에서의 Yield 사용법을 소개하겠습니다. 도움이 필요한 친구들이 모두 참고할 수 있기를 바랍니다.
예전에 PHP 자체에도 코루틴이 있다는 이야기를 들은 적이 있어서 찾아보고 알게 되었습니다.
Demo가 내 github 노트에 업로드되었습니다
실행 메모리의 병목 현상을 해결합니다. PHP 프로그램의 변수가 메모리에 저장됩니다. :
Fatal Error: Allowed memory size of xxxxxx bytes.
그래서 우리는 PHP의 최대 실행 메모리 설정을 지정하겠습니다: ini_set('memory_limit', '200M')
하지만 5g만큼 큰 파일을 읽을 때 실행 메모리가 너무 많아질 수 있으므로 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; }
시간은 같습니다. 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; }
시간 간격은 1초이므로 Yield의 예를 통해 첫 번째 예처럼 for 루프의 내용이 메모리에 저장되지 않고 하나씩 소모된다는 것을 알 수 있습니다. 하나.
txt 파일을 만들고 다음과 같이 씁니다.
第1行 第2行 第3行 第4行 第5行 第6行 第7行 第8行
<?php function 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를 사용하여 파일을 한 줄씩 읽습니다.
이 시점에서 여러분은 아마도 Yield의 역할을 알고 있을 것입니다. 그리고 더 깊이 들어가 보겠습니다
추천 학습:php 비디오 튜토리얼
위 내용은 PHP에서 Yield의 사용법은 무엇입니까의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!