현재 위치: > 최신 기사 목록> OB_CLEAN ()의 요구 사항은 무엇이며 OB_FLUSH ()를 사용합니까? 함께 사용할 때 어떤 세부 사항에주의를 기울여야합니까?

OB_CLEAN ()의 요구 사항은 무엇이며 OB_FLUSH ()를 사용합니까? 함께 사용할 때 어떤 세부 사항에주의를 기울여야합니까?

M66 2025-07-04

1. 출력 버퍼링이란 무엇입니까?

출력 버퍼링은 PHP가 스크립트를 실행하면 출력 컨텐츠를 메모리 버퍼에 저장 함을 의미합니다. PHP는 스크립트가 실행될 때까지 이러한 내용을 브라우저로 보내지 않습니다. 출력 버퍼링은 출력 타이밍을 효과적으로 제어하여 불필요한 출력을 줄이고 페이지로드를 가속화 할 수 있습니다.

PHP는 출력 버퍼링과 관련된 몇 가지 기능을 제공하며, 그 중 OB_CLEAN ()OB_FLUSH () 가 가장 일반적으로 사용되는 두 가지입니다.


2. ob_clean ()ob_flush () 의 역할

1. ob_clean () 함수

OB_CLEAN () 의 목적은 현재 출력 버퍼의 내용을 지우는 것이지만 버퍼를 닫지 않습니다. 생성 할 때 출력을 수정하거나 재 처리하려면 OB_CLEAN ()을 사용하여 현재 버퍼링 된 컨텐츠를 지울 수 있습니다. 예를 들어:

 ob_start(); // 출력 버퍼링을 시작하십시오
echo "Hello, world!";
ob_clean(); // 버퍼를 지 웁니다
echo "New content"; // 새로운 컨텐츠를 출력하십시오
ob_end_flush(); // 브라우저에 대한 출력 버퍼 컨텐츠

위의 코드에서 OB_CLEAN ()은 Hello, World를 삭제합니다! 최종 출력이 새로운 컨텐츠 입니다.

2. ob_flush () 함수

OB_FLUSH () 의 목적은 현재 버퍼의 내용을 브라우저로 보내는 것이지만 버퍼는 지우지 않습니다. 버퍼의 컨텐츠를 브라우저에 "파악"하지만 후속 사용을 위해 버퍼의 내용을 유지합니다. 예를 들어:

 ob_start();
echo "This is buffered.";
ob_flush(); // 브라우저에 콘텐츠를 보내십시오,但不버퍼를 지 웁니다
echo "Next output.";
ob_end_flush(); // 마지막으로 모든 버퍼 컨텐츠를 브라우저에 출력하십시오

OB_FLUSH () 는 종종 큰 파일 다운로드 또는 스트리밍을 처리 할 때 컨텐츠를 실시간으로 새로 고치는 데 사용됩니다. 전체 파일이 완료되기를 기다리지 않고도 컨텐츠의 일부를 클라이언트에게 보내는 데 사용될 수 있습니다.


3. ob_clean ()ob_flush ()를 함께 사용할 때의 예방 조치

OB_CLEAN ()OB_FLUSH ()는 함께 사용할 수 있지만 주문 및 사용 시나리오는 특별한주의가 필요합니다.

  1. 먼저 지우고 새로 고침 :
    버퍼의 현재 출력을 지우고 새 컨텐츠를 즉시 브라우저에 보내려면 다음과 같이이 두 기능을 사용할 수 있습니다.

     ob_start(); // 출력 버퍼링을 시작하십시오
    echo "Old content";
    ob_clean(); // 버퍼를 지 웁니다
    echo "New content"; // 새로운 콘텐츠
    ob_flush(); // 将새로운 콘텐츠发送到浏览器
    

    이 방법은 출력에 이전 컨텐츠를 포함시키지 않고 출력을 즉시 브라우저로 새로 고치지 않는 시나리오에 적합합니다.

  2. 지저분한 버퍼를 피하십시오.
    OB_FLUSH ( )를 사용한 후 OB_CLEAN () 이 실행되지 않으면 처리되지 않은 출력이 버퍼에 유지 될 수 있습니다. 특히 OB_FLUSH ()를 여러 번 호출 할 때 출력 내용의 중복 또는 혼동이 발생하여 최종 결과에 영향을 줄 수 있습니다.

  3. OB_FLUSH ()에 대한 여러 통화의주의 사용 :
    장기 실행 스크립트 (예 : 큰 파일 업로드 또는 다운로드)와 같은 일부 시나리오에서는 버퍼의 내용을 실시간으로 새로 고치려면 처리 중에 OB_FLUSH ()를 여러 번 호출해야 할 수도 있습니다. 사용하면 각 새로 고침이 필요하고 OB_CLEAN () 과 충돌하지 않도록하십시오.


4. 조합으로 사용할 때 주목해야 할 사항

  1. 버퍼가 켜지는지 확인하십시오.
    OB_CLEAN () 또는 OB_FLUSH ()를 사용하기 전에 출력 버퍼링이 활성화되어 있는지 확인하십시오 ( OB_START () ). 그렇지 않으면 이러한 기능을 호출하면 잘못되거나 잘못된 작업이 발생합니다.

     ob_start(); // 버퍼를 먼저 활성화해야합니다
    ob_clean();
    
  2. 합리적으로 URL을 사용할 때 :
    코드에 URL을 삽입 해야하는 경우 (예 : Echo 로 URL을 출력) URL의 도메인 이름 부분이 M66.net을 사용하여 일관성을 유지하도록 할 수 있습니다. 예를 들어: