> 백엔드 개발 > PHP 튜토리얼 > PHP 캐싱 메커니즘

PHP 캐싱 메커니즘

巴扎黑
풀어 주다: 2016-11-22 16:48:45
원래의
980명이 탐색했습니다.

PHP 프로그램을 작성할 때 이런 문제가 자주 발생합니다.

header() 함수, session() 함수, 쿠키 함수 사용 등에도 문제가 있을 수 있습니다

PHP 프로그램 다음 오류가 보고됩니다.


헤더 정보를 수정할 수 없습니다. 헤더가 이미 전송되었습니다(출력은

해더 정보를 수정할 수 없습니다. 이 오류를 해결하려면

먼저 http 프로토콜

을 이해해야 합니다. http 프로토콜을 사용하면 서버는 html 파일을 출력하는데, html 파일은 두 부분으로 구성되는데, 한 부분은 우리 페이지 자체의 데이터이고, 다른 부분은 html 페이지의 헤더 정보입니다. 정보에는 페이지가 표시되는 인코딩 형식, html 데이터의 크기, 점프 여부, 캐시 여부 등과 같은 많은 데이터가 포함되어 있습니다. 이러한 html 헤더 파일 정보는 일단 생성되면 수정할 수 없습니다. . 이것이 위에서 보고된 오류의 원인입니다.

두 번째, PHP 캐싱 메커니즘

PHP 프로그램을 실행하는 동안 캐시의 두 부분이 있습니다. 하나는 메모리에 있는 프로그램의 데이터 캐시로 이해되는 프로그램 캐시이고, 다른 하나는 PHP에서 제공하는 캐시 모듈입니다. 캐시가 켜져 있으면 프로그램에 에코 데이터가 있으면 PHP 프로그램 실행이 완료될 때까지 HTML 파일을 직접 생성하는 대신 데이터가 캐시에 저장됩니다. 모듈에 의해 캐시된 데이터도 HTML 코드를 생성합니다. 다음은 두 가지 예입니다.

1. 캐싱이 활성화되어 있지 않습니다(기본값).

<?php
echo "123";
header("Content-type:text/html;charset=utf-8")
echo "456";
?>
로그인 후 복사
헤더 정보를 수정할 수 없음 오류가 표시됩니다. 이번에는

2. 캐싱 메커니즘을 켜세요

<?php
ob_start() ; //开启页面缓存
echo "123";
header("Content-type:text/html;charset=utf-8")
echo "456";
?>
로그인 후 복사

위의 두 예에서는 캐시 상태가 활성화되지 않았습니다. echo "123"에 도달하면 HTML 코드가 생성되었습니다. 헤더 함수는 헤더 파일 정보를 수정할 수 없으며 예제 2에서는 ob_start(); ob는 output_buffer), echo "123"이면 캐시 모듈에 데이터를 쓴 후 header() 함수가 실행됩니다. 이때 HTML 페이지는 생성되지 않으며 그 다음에는 echo "456"도 있습니다. 프로그램이 실행되면 최종적으로 캐시 모듈의 데이터가 완전한 HTML 페이지로 재생성되므로 오류가 보고되지 않습니다.

둘째, PHP의 캐시 메커니즘 기능과 활성화 방법

위에서 언급한 것처럼 ob_start() 함수는 캐시 모듈을 활성화할 수 있으며, 하지만 이 함수는 이 페이지만 엽니다. 필요한 경우 php.ini 파일을 수정하고,output_buffering 옵션을 찾은 다음,output_buffering=4096으로 수정할 수 있습니다.(On도 허용됩니다.) 숫자는 캐시 크기를 나타냅니다.

PHP 캐싱 메커니즘에도 몇 가지 기능이 있습니다. PHP 캐싱 메커니즘을 더 잘 이해하려면 한 번 시도해 보세요.

ob_start()가 출력 버퍼링을 시작하고 이때 PHP가 중지됩니다. 출력 후 내부 버퍼로 전송됩니다.


ob_get_contents() 이 함수는 내부 버퍼의 내용을 반환합니다. 이는 이러한 출력을 문자열로 변환하는 것과 같습니다. ()는 내부 버퍼의 길이를 반환합니다.

ob_end_flush()는 출력 버퍼를 종료하고 해당 버퍼의 내용을 출력합니다.

ob_end_clean() End. 출력 버퍼를 제거하고 버퍼의 내용을 버립니다.


관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿