>  기사  >  백엔드 개발  >  무한 루프에 관해 작은 질문을 드리고 싶습니다.

무한 루프에 관해 작은 질문을 드리고 싶습니다.

WBOY
WBOY원래의
2016-12-01 00:57:051053검색

무한 루프를 작성하면 브라우저가 직접 충돌하지만 명령줄에서는 계속 실행할 수 있는 이유는 무엇입니까? 단지 합의 내용이 다르기 때문일까요? 자세한 설명을 부탁드립니다.

<code>while(true){
echo 'a';
}</code>

답글 내용:

무한 루프를 작성하면 브라우저가 직접 충돌하지만 명령줄에서는 계속 실행할 수 있는 이유는 무엇입니까? 단지 합의 내용이 다르기 때문일까요? 자세한 설명을 부탁드립니다.

<code>while(true){
echo 'a';
}</code>

브라우저 측에서 테스트해보면 PHP에는 다양한 캐시가 있기 때문입니다
ob_end_flush
를 먼저 호출한 후 루프에서 플러시()를 호출하면 됩니다
이렇게 내용이 나옵니다
그러나 PHP의 기본 실행 시간과 브라우저의 시간 초과 메커니즘도 고려해야 합니다.

cli 모드에서 PHP의 실행 시간은 기본적으로 무제한이며, 기본적으로 활성화된 ob 등의 기능은 없습니다

http://www.php100.com/manual/...

php.ini 설정 옵션 무시

implicit_flush: 명령줄 모드에서는 print 및 echo의 모든 출력이 버퍼링 작업 없이 즉시 출력 포트에 기록됩니다. 표준 출력을 지연하거나 제어하려는 경우에도 출력 버퍼링 설정을 사용할 수 있습니다.

max_execution_time: 쉘 환경에서 PHP를 사용할 수 있는 무한한 가능성으로 인해 최대 실행 시간은 무한 값으로 설정됩니다. 웹용으로 개발된 애플리케이션은 실행하는 데 몇 초 밖에 걸리지 않는 반면, 셸 애플리케이션은 훨씬 더 오래 걸릴 수 있습니다.

php.ini의 max_execution_time은 프로그램 실행 시간을 지정합니다. 이 설정을 초과하면 스크립트가 치명적인 오류를 반환합니다. 기본값은 30초이며 명령줄에서는 이를 제어하지 않습니다.

합격 가능set_time_limit(0)시간 제한 없음

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.