현재 위치: > 최신 기사 목록> PHP의 종료 및 OB_END_FLUSH ()가 함께 사용될 때 충돌합니까? 호환성 세부 사항

PHP의 종료 및 OB_END_FLUSH ()가 함께 사용될 때 충돌합니까? 호환성 세부 사항

gitbox 2025-06-08

PHP 프로그래밍에서 EXITOB_END_FLUSH () 는 두 가지 일반적인 기능입니다. Exit은 스크립트의 실행을 종료하는 데 사용되며 OB_END_FLUSH ()는 캐시 된 컨텐츠를 출력하고 출력 버퍼를 닫는 데 사용됩니다. 두 기능은 다르게 수행되지만 경우에 따라 함께 사용될 수 있습니다. 따라서 ExitOB_END_FLUSH ()가 함께 사용되면 충돌이 있습니까? 우리는 상세한 분석을 통해 그들의 호환성을 이해할 것입니다.

1. 출구 기능 분석

EXIT () 함수는 현재 스크립트의 실행을 종료하거나 상태 코드를 출력하고 실행을 종료하는 데 사용됩니다. 다음과 같이 사용하기가 매우 간단합니다.

 exit("Goodbye!");

이 코드 라인은 "Goodbye!"를 인쇄 할 것입니다. 스크립트의 실행을 종료하십시오. Exit은 스크립트 실행의 상태 코드로 정수 매개 변수를받을 수도 있습니다. 스크립트가 치명적인 오류에 직면 할 때 출구 (1) 를 통해 종료하는 것이 일반적이며, 종료 (0) 를 통해 정상적으로 종료 할 수 있습니다.

 exit(1);  // 상태 코드를 종료하고 반환하십시오 1

2. OB_END_FLUSH () 함수 구문 분석

OB_END_FLUSH () 는 PHP 출력 버퍼와 관련된 기능입니다. 그 목적은 버퍼 컨텐츠를 브라우저에 출력하고 출력 버퍼를 닫는 것입니다. 출력 버퍼가 켜지지 않으면이 기능을 호출 할 때 경고가 발생합니다.

 ob_start();  // 출력 버퍼링을 시작하십시오
echo "Hello, world!";
ob_end_flush();  // 버퍼를 출력하고 버퍼를 닫습니다

3. 종료 할 때의 동작 및 ob_end_flush ()가 함께 사용됩니다

3.1 출구 의 영향

Ob_end_flush ()를 호출 한 후 exit ()를 사용하면 exit ()가 스크립트 실행을 직접 종료합니다. 즉, exit ()가 호출되면 출력이 될 수있는 버퍼 컨텐츠를 포함하여 후속 PHP 코드 실행이 중지됩니다. 따라서 Exit ()는 출력 버퍼의 내용이 브라우저로 완전히 전송되는 것을 방지합니다.

 ob_start();  // 출력 버퍼링을 시작하십시오
echo "Hello, ";
ob_end_flush();  // 출력 캐시를 먼저합니다
exit("Goodbye!");  // 구현하다 exit,스크립트 종료

이 예에서 "hello"는 OB_end_flush ()"Goodbye!" 를 통해 출력됩니다. exit () 에 의해 중단됩니다. 따라서 exit () 전에 ob_end_flush () 가 호출되면 이전 컨텐츠는 올바르게 출력되지만 다음 exit ()는 다시 출력되지 않습니다.

3.2 ob_end_flush () 의 역할

먼저 ob_end_flush ()를 실행하고 현재 출력 버퍼의 내용이 브라우저로 전송되면 exit ()가 나중에 호출 되더라도 브라우저는 출력을 받았으며 더 이상 exit () 의 영향을받지 않습니다. 다시 말해, OB_end_flush ()는 먼저 버퍼의 내용을 브라우저에 릴리스 하고 Exit ()는 스크립트 실행을 종료합니다.

 ob_start();  // 출력 버퍼링을 시작하십시오
echo "Starting..."; 
ob_end_flush();  // 버퍼를 출력하고 버퍼를 닫습니다
exit("Ending now.");

이 예에서는 브라우저가 먼저 "시작 ..."를 표시 한 다음 스크립트가 즉시 종료되고 "지금 끝납니다". 표시되지 않습니다.

4. 주목할만한 것들

  • Ob_end_flush ()를 먼저 호출 한 다음 exit () : 일반적으로 문제가 없습니다. ob_end_flush ()는 버퍼링 된 컨텐츠를 출력하고 exit ()는 스크립트 실행을 종료합니다.

  • 먼저 exit ()을 호출 한 다음 Ob_end_flush ()를 호출하십시오 . exit ()가 ob_end_flush () 전에 호출되면 출력 버퍼 컨텐츠가 브라우저로 전송되지 않습니다. exit () 가 스크립트 실행을 직접 종료하기 때문에 모든 후속 코드 ( OB_END_FLUSH ( 포함)는 실행되지 않습니다.

  • 중첩 출력 버퍼링 : OB_END_FLUSH ()를 호출하기 전에 OB_START () 또는 OB_FLUSH ()가 여러 번 사용되면 출력 또는 버퍼 오류의 불필요한 복제를 피하기 위해 호출 순서에주의하십시오.

5. 요약

exit ()ob_end_flush () 와 함께 사용될 때 충돌이 있을지 여부는 통화 순서에 따라 다릅니다. 불필요한 문제를 피하려면 OB_end_flush () 호출 후 항상 exit ()을 호출하는 것이 좋습니다. 이는 스크립트가 종료되기 전에 출력 버퍼의 내용이 올바르게 출력되도록합니다. exit () 전에 ob_end_flush () 가 호출되면 버퍼 컨텐츠가 처리되도록 할 수 있으며 exit ()는 스크립트의 실행에만 영향을 미칩니다.

이 두 기능의 통화 순서를 합리적으로 관리함으로써 프로그램의 출력이 Exit () 호출의 영향을받지 않도록하여 충돌을 피할 수 있습니다.