제목을 보고 헷갈려 하시는 분들이 많을 거라 생각하고, Output_buffering이 무엇인지도 모르시는 분들이 많을 거라 생각합니다. 그래서 오늘은 PHP의 Output_buffering에 대해 자세히 소개하겠습니다. 아시다시피 지식 포인트를 통합할 수 있고, 모르면 열심히 공부하면 됩니다!
1. PHP의 캐시가 무엇인지 이야기해 봅시다!
PHP에서는 캐시를 크게 클라이언트 캐시(브라우저 캐시)와 서버 캐시(서버 캐시)로 나눌 수 있습니다. PHP는 B/S 아키텍처를 기반으로 하기 때문에 브라우저 측 캐시와 서버 측 캐시로 이해할 수 있습니다.
서버측에서 PHP와 함께 제공되는 캐시에서는 크게 두 가지 캐시 유형으로 나눌 수 있습니다! 프로그램 캐시와 OB 캐시! 이것은 우리가 서버사이드 캐싱을 배우는 주요 내용이기도 합니다!
PHP에 캐시된 출력 시퀀스는 다음과 같습니다.
열린 PHP 출력 캐시:
echo,print -> php output_buffering -> server buffering -> browser buffering -> browser display
열리지 않은 PHP 출력 캐시:
echo,print -> server buffering -> browser buffering -> browser display
브라우저 출력 캐시: IE는 256바이트, Chrome 및 FireFox는 1000바이트, 출력 데이터만 도달하면 브라우저에서 출력합니다. 이 길이에 도달한 후에만 페이지의 데이터가 삭제됩니다. 그렇지 않으면 스크립트가 종료됩니다.
2. 서버 측 응답 프로세스
A. 클라이언트가 서버에 요청 응답을 보냅니다.
B. Apache 서버는 PHP 모듈을 로드하고 해당 프로세스(또는 스레드)를 시작한 다음 해당 PHP 스크립트 페이지를 실행합니다!
C. OB 캐시가 켜지지 않으면 모든 실행 결과가 프로그램 캐시에 배치된 후 패키징되어 브라우저로 전송됩니다! 브라우저는 페이지를 렌더링하고 우리가 마지막으로 본 웹 페이지를 생성합니다!
D. OB 캐시가 켜지면 실행 결과가 각각 OB 캐시와 프로그램 캐시에 저장됩니다. 프로그램이 마지막 라인에 도달하면 OB 캐시의 데이터가 프로그램 캐시로 다시 플러시됩니다. , 그리고 이를 패키지화하여 브라우저로 반환합니다! 브라우저는 페이지를 렌더링하고 우리가 보는 웹 페이지를 생성합니다!
3. OB 캐시의 일반적인 용도!
a,output_buffering=4096, 적은 데이터 출력(버퍼 1개 미만)
for($i=0; $i<5; $i++){ echo $i.'<br>'; sleep(1); }
실행 결과: 데이터가 버퍼 1개로 가득 차지 않기 때문에 모든 스크립트가 완료된 후에만 출력됩니다.
b, 출력_버퍼링=4096, 더 적은 데이터 출력(버퍼 1개 미만), 출력_버퍼링 끄기, php.ini
echo str_repeat(" ",1024);//这里重复输出一个空白 for($i=0; $i<5; $i++){ echo $i."<br/>"; flush(); sleep(1); }
에서 출력_버퍼링=0 수정 실행 결과: OB가 비활성화되어 있으므로 스크립트가 나올 때까지 기다릴 필요가 없습니다. 실행이 완료되면 데이터가 OB에 남아 있지 않고 간헐적으로 출력되는 것을 볼 수 있습니다. echo ->browser buffering -> 브라우저 표시
c, output_buffering=4096, 더 큰 데이터 출력(1 버퍼보다 큼), ob_start()를 사용하지 마세요
for($i=0; $i<5; $i++){ echo file_get_contents('f.txt').$i.'<br/><br/><br/><br/>'; sleep(2); }
작업 결과: f.txt는 4kb보다 큰 파일입니다. , 버퍼의 기본값보다 크고 버퍼 공간이 부족하기 때문에 버퍼가 가득 찰 때마다 출력을 하므로 간헐적으로 출력되는 모습을 볼 수 있습니다.
d, output_buffering=4096, 더 큰 데이터 출력(버퍼 1개보다 큼), ob_start() 사용
ob_start(); for($i=0; $i<5; $i++){ echo file_get_contents('f.txt').$i.'<br/><br/><br/><br/>'; sleep(2); }
실행 결과: ob_start()를 사용하므로 버퍼에 충분한 공간이 설정되므로 다음 위치에 저장됩니다. 스크립트 실행 완료 후 출력됩니다.
e, output_buffering=On, ob_start() 사용
ob_start(); echo "abc-"; header("content-type:text/html;charset=utf-8"); echo "hello-"; ob_end_flush(); echo "aa-"; echo ob_get_contents();
실행 결과: abc-hello-aa-abc-hello-aa-
f, output_buffering=Off, ob_start() 사용
ob_start(); echo "abc-"; header("content-type:text/html;charset=utf-8"); echo "hello-"; ob_end_flush(); echo "aa-"; echo ob_get_contents();
실행 결과:
abc-hello-aa-
출력 버퍼는 스택 가능합니다. 즉, 하나의 ob_start()가 활성화되면 다른 ob_start()를 호출할 수 있다는 의미입니다. ob_end_flush()를 올바른 횟수만큼 호출했는지 확인하세요. 여러 출력 콜백 함수가 활성화된 경우 출력 내용은 항상 중첩된 순서로 필터링됩니다.
참고: PHP5.2에서는 OB가 기본적으로 꺼져 있고 5.3 이후에는 기본적으로 켜져 있습니다.
일반적인 방법:
1.ob_start
output_buffering 메커니즘을 활성화하면 스크립트가 활성화됩니다. 더 이상 브라우저에 직접 출력되지 않고 일시적으로 PHP 버퍼링 영역에 씁니다. 스크립트 실행이 완료될 때까지 전송되지 않습니다.
2.ob_get_contents
PHP 버퍼링에서 데이터를 가져옵니다. 참고: ob_end_clean() 전에 호출해야 합니다. 그렇지 않으면 빈 문자만 얻게 됩니다.
3.ob_end_flush 및 ob_end_clean
ob_end_flush는 PHP 버퍼링으로 데이터를 출력하지만 삭제하지는 않습니다.
ob_end_clean은 출력되지 않으며 PHP 버퍼링의 데이터만 삭제됩니다.
4.ob_flush, 플러시, ob_implicit_flush
ob_flush는 PHP 버퍼링의 데이터를 프로그램 캐시로 새로 고칩니다.
flush는 프로그램 캐시를 브라우저 캐시로 새로 고칩니다.
ob_implicit_flush는 절대(암시적)를 켜거나 끕니다. 브러시로 보냅니다. 절대(암시적) 플러시는 각 출력 호출 후에 플러시 작업을 수행하므로 플러시()에 대한 명시적 호출이 더 이상 필요하지 않습니다.
4. OB 캐시의 역할!
OB 캐시는 다양한 측면에서 활용되는데 제가 아는 것은 크게 두 가지 측면입니다!
a. 웹사이트가 정지될 예정이라면 OB 캐시를 선택하는 것이 좋습니다!
b. 오류 해결 경고: 헤더 정보를 수정할 수 없습니다. 헤더가 이미 전송되었습니다!
오류 원인: 응답 헤더와 해당 본문의 정렬이 잘못되어 발생합니다! 정상적인 상황에서 서버가 브라우저에 반환하는 해당 내용은 응답 헤더 + 응답 본문이어야 합니다!
그러나 OB 캐시를 켜면 해당 헤더 정보(일반적으로 header() 함수에 의해 설정된 정보)가 프로그램 캐시에 저장됩니다!
echo print_r var_dump 등과 같은 기타 출력 콘텐츠는 먼저 OB 캐시에 저장됩니다!
프로그램이 종료되거나 OB 캐시가 닫히면 OB 캐시의 내용을 프로그램 캐시에 넣어주세요! 이렇게 하면 응답 헤더 정보가 항상 응답 본문 내용보다 앞에 옵니다!
요약:
output_buffering을 모르는 친구들도 이 글을 공부하면서 이해를 할 수 있을 거라 믿습니다. 당신의 일!
관련 권장 사항:
PHP 출력 캐시 기반의 출력 버퍼링 예제에 대한 자세한 설명
PHP 기반 출력 캐싱에 대한 심층적인 이해 (출력_버퍼링)
위 내용은 PHP의 Output_buffering에 대한 자세한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

여전히 인기있는 것은 사용 편의성, 유연성 및 강력한 생태계입니다. 1) 사용 편의성과 간단한 구문은 초보자에게 첫 번째 선택입니다. 2) 웹 개발, HTTP 요청 및 데이터베이스와의 우수한 상호 작용과 밀접하게 통합되었습니다. 3) 거대한 생태계는 풍부한 도구와 라이브러리를 제공합니다. 4) 활성 커뮤니티와 오픈 소스 자연은 새로운 요구와 기술 동향에 맞게 조정됩니다.

PHP와 Python은 웹 개발, 데이터 처리 및 자동화 작업에 널리 사용되는 고급 프로그래밍 언어입니다. 1.PHP는 종종 동적 웹 사이트 및 컨텐츠 관리 시스템을 구축하는 데 사용되며 Python은 종종 웹 프레임 워크 및 데이터 과학을 구축하는 데 사용됩니다. 2.PHP는 Echo를 사용하여 콘텐츠를 출력하고 Python은 인쇄를 사용합니다. 3. 객체 지향 프로그래밍을 지원하지만 구문과 키워드는 다릅니다. 4. PHP는 약한 유형 변환을 지원하는 반면, 파이썬은 더 엄격합니다. 5. PHP 성능 최적화에는 Opcache 및 비동기 프로그래밍 사용이 포함되며 Python은 Cprofile 및 비동기 프로그래밍을 사용합니다.

PHP는 주로 절차 적 프로그래밍이지만 객체 지향 프로그래밍 (OOP)도 지원합니다. Python은 OOP, 기능 및 절차 프로그래밍을 포함한 다양한 패러다임을 지원합니다. PHP는 웹 개발에 적합하며 Python은 데이터 분석 및 기계 학습과 같은 다양한 응용 프로그램에 적합합니다.

PHP는 1994 년에 시작되었으며 Rasmuslerdorf에 의해 개발되었습니다. 원래 웹 사이트 방문자를 추적하는 데 사용되었으며 점차 서버 측 스크립팅 언어로 진화했으며 웹 개발에 널리 사용되었습니다. Python은 1980 년대 후반 Guidovan Rossum에 의해 개발되었으며 1991 년에 처음 출시되었습니다. 코드 가독성과 단순성을 강조하며 과학 컴퓨팅, 데이터 분석 및 기타 분야에 적합합니다.

PHP는 웹 개발 및 빠른 프로토 타이핑에 적합하며 Python은 데이터 과학 및 기계 학습에 적합합니다. 1.PHP는 간단한 구문과 함께 동적 웹 개발에 사용되며 빠른 개발에 적합합니다. 2. Python은 간결한 구문을 가지고 있으며 여러 분야에 적합하며 강력한 라이브러리 생태계가 있습니다.

PHP는 현대화 프로세스에서 많은 웹 사이트 및 응용 프로그램을 지원하고 프레임 워크를 통해 개발 요구에 적응하기 때문에 여전히 중요합니다. 1.PHP7은 성능을 향상시키고 새로운 기능을 소개합니다. 2. Laravel, Symfony 및 Codeigniter와 같은 현대 프레임 워크는 개발을 단순화하고 코드 품질을 향상시킵니다. 3. 성능 최적화 및 모범 사례는 응용 프로그램 효율성을 더욱 향상시킵니다.

phphassignificallyimpactedwebdevelopmentandextendsbeyondit

PHP 유형은 코드 품질과 가독성을 향상시키기위한 프롬프트입니다. 1) 스칼라 유형 팁 : PHP7.0이므로 int, float 등과 같은 기능 매개 변수에 기본 데이터 유형을 지정할 수 있습니다. 2) 반환 유형 프롬프트 : 기능 반환 값 유형의 일관성을 확인하십시오. 3) Union 유형 프롬프트 : PHP8.0이므로 기능 매개 변수 또는 반환 값에 여러 유형을 지정할 수 있습니다. 4) Nullable 유형 프롬프트 : NULL 값을 포함하고 널 값을 반환 할 수있는 기능을 포함 할 수 있습니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

MinGW - Windows용 미니멀리스트 GNU
이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

드림위버 CS6
시각적 웹 개발 도구

mPDF
mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경
