>  기사  >  백엔드 개발  >  PHP: 플러시()와 ob_flush(), ob_end_flush() 간의 사용법 차이점에 대한 자세한 설명

PHP: 플러시()와 ob_flush(), ob_end_flush() 간의 사용법 차이점에 대한 자세한 설명

伊谢尔伦
伊谢尔伦원래의
2017-06-24 13:10:153651검색

먼저 버퍼에 대해 이야기해 보겠습니다. 이는 4096(1kb)입니다. [php.ini구성 파일에서 출력_버퍼링 구성을 찾으세요] PHP에는 PHP 출력_버퍼링 메커니즘이 있습니다. 실행되면 내용을 즉시 출력하지 않고 버퍼에 에코/인쇄 내용을 출력하려고 합니다. 버퍼가 가득 차면 데이터가 시스템 커널로 전달되고 tcp로 전달되어 표시됩니다. PHP php 출력_버퍼링 메커니즘이 켜져 있으면(기본적으로 켜져 있으며 ob_start() 함수를 통해 켜진 후) PHP 버퍼의 데이터가 설정 값에 도달한 경우에만 버퍼의 데이터가 브라우저로 전송됩니다. 그러나 브라우저에도 캐시가 있습니다.
ob_start() 함수: 출력 버퍼를 엽니다.
함수 형식 void ob_start(void)
설명: 버퍼가 활성화되면 모두 -PHP 프로그램의 파일 헤더 정보는 전송되지 않고 내부 버퍼에 저장됩니다. 버퍼의 내용을 출력하려면 ob_end_flush() 또는 플러시()를 사용하여 버퍼의 내용을 출력할 수 있습니다.

flush: 버퍼 내용과 출력을 새로 고칩니다.
함수 형식: 플러시()
설명: 이 함수는 자주 사용되며 매우 효율적입니다.

ob_get_contents : 내부 버퍼의 내용을 반환합니다.
함수 형식: 문자열 ob_get_contents(void)
설명: 이 함수는 현재 버퍼의 내용을 반환합니다. 출력 버퍼가 활성화되지 않은 경우 FALSE를 반환합니다.

ob_get_length: 내부 버퍼의 길이를 반환합니다.
함수 형식: int ob_get_length(void)
설명: 이 함수는 ob_get_contents와 같이 현재 버퍼의 길이를 반환합니다. 출력 버퍼가 활성화되지 않으면 FALSE를 반환합니다.

ob_end_clean: 내부 내용을 삭제합니다. buffer , 내부 버퍼 닫기
함수 형식: void ob_end_clean(void)
설명: 이 함수는 내부 버퍼의 내용을 출력하지 않고 삭제합니다.

ob_end_flush: 내부 버퍼의 내용을 브라우저로 보내고 닫습니다. 출력 버퍼
함수 형식: void ob_end_flush(void)
설명: 이 함수는 출력 버퍼의 내용(있는 경우)을 보냅니다.

ob_implicit_flush: 절대 플러시를 켜거나 끕니다.
함수 형식: void ob_implicit_flush([int 플래그] )
설명: 버퍼는 기본적으로 꺼져 있습니다. 절대 출력을 켜면 각 스크립트 출력이 브라우저로 직접 전송되며, 플러시()를 호출할 필요가 없습니다.


flush()는 즉시 콘텐츠를 보낼 수 있습니다. 클라이언트로의 출력을 기다리고 있으며, ob_flush()는 버퍼가 가득 찬 경우에만 출력됩니다. 다음의 간단한 PHP 예제를 통해 확인할 수 있습니다:

샘플 코드:

<?php
 //这是防止浏览器的缓存
 echo str_repeat(" ",1024);
 for($i=0;$i<5;$i++){
  echo $i; 
  sleep(1);
  flush();//会每隔1s输出一个数字,但是使用ob_flush()会等待5s一起输出
 }
?>

위 내용은 PHP: 플러시()와 ob_flush(), ob_end_flush() 간의 사용법 차이점에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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