이 기사의 예에서는 ob_flush를 사용할 때 PHP가 매초 출력할 수 없다는 원칙을 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요. 구체적인 분석은 다음과 같습니다.
기능 구현:
브라우저는 매초마다 숫자를 출력합니다.
php.ini는 다음과 같이 구성됩니다:
버전 5.3
implicit_flush = 꺼짐
출력_버퍼링 = 꺼짐
기타: output_buffering이 켜져 있는지 확인하고 다음을 수행할 수 있습니다.
이 코드를 다시 살펴보겠습니다.
<?php $i = 3; ob_start(); while ($i--) { echo $i, "<br />"; ob_flush(); flush(); sleep(1); } ob_end_clean(); ?>
그런데 왜 이 코드가 매초 출력될 수 없나요? ?
원인 분석:
Apache 작동 원리: 주소에 액세스(요청 보내기)하면 apache가 PHP를 시작한 다음 PHP 실행은 페이지 수준에서 이루어집니다. 즉, 실행 가능한 코드가 있는 경우: 실행 가능한 코드가 있는 경우 Apache에 전달됩니다. 모두 실행되고 Apache는 이를 브라우저에 던져 결과를 표시합니다
어떻게 달성할 수 있나요?
cli가 결과를 다른 방식으로 표시한다면 차이점은 무엇인가요?
리눅스 명령:
php5 테스트.php
아파치나 웹 서비스를 거치지 않고 PHP로 직접 구현할 수 있습니다.
<?php $i = 3; while ($i--) { echo $i, "\n"; sleep(1); } ob_end_clean(); ?>
이 기사가 모든 사람의 PHP 프로그래밍 설계에 도움이 되기를 바랍니다.