전체 PHP 스크립트 실행이 끝날 때까지 헤더 출력을 브라우저로 지연시킬 수 있습니까?PHP는 전체 PHP 스크립트가 실행될 때까지 헤더 출력을 지연합니까?
답변
첫 번째 코드가 php에서 웹 서버로 보내지면 헤더가 전송됩니다. 하여 스크립트의 끝 또는 use output buffering
같은 일
이것은 대부분의 전문 프로그래머가 권합니다 방법입니다을 달성 할 때까지
그래서 그냥 "아무것도 표시하지"수, 이유 당신은이 방법으로하면된다 항상한다 오류 및 오류 페이지를 효과적으로 관리 할 수 있습니다.
응용 프로그램이 이미 스크립트가 실행될 때 출력을 표시하도록 작성된 경우 처음부터 시작하는 것이 좋습니다.
일반적으로 출력을 관리하는 방법은 작은 템플릿의 시스템으로, 템플릿의 시스템은 템플릿 등을 구문 분석 할 필요가 없습니다. 단지 데이터 집합을 전달한 다음 필요한 템플릿을 포함해야합니다.
$template->set(key[,value = true])
의 형식으로 데이터를 인식하는 클래스를 만든 다음이 함수가 실행될 때 $template->display(filename)
과 같이 표시되는 함수를 만들어야합니다. 변수를 추출한 다음 템플릿 파일을 포함해야합니다. exit(0)
을 호출하면 코드가 더 이상 실행되지 않습니다.
간단한 템플릿 시스템과 같이 할 수있다 :
이class Template
{
private $_data = array();
public function set($key,$value = true)
{
$this->_data[$key] = $value;
}
public function display($template)
{
//Check template exuists
extract($this->_data);
require_once $template;
exit(0);
}
}
다음과 같이 아주 간단하게 사용
$template = new Template();
$template->set("title","Practical home Page");
$template->set("header","My Home Page");
$lists = array(
array(
"value" => "list item 1",
"id" => "list_item_1",
"class" => "item"
),
array(
"value" => "list item 2",
"id" => "list_item_2",
"class" => "item"
)
);
$template->set("menu",$lists);
$template->display("templates/homepage.php");
당신은 또한 내가 이전에 대답 한 다음 대답을 읽고 싶습니다 수 있습니다!
-1 : 이유가 무엇입니까? 이것이 Zend Engine이 헤더를 처리하는 방법입니다. ['header()'] (http://php.net/header), ['headers_list()'] (http://php.net/headers_list), ['header_remove()'] (http://php.net/header_remove) 언제든지 헤더를 사용하여 작업 할 수 있습니다. 당신의 방법은 단지 단계를 잊어 버렸을 때 뒤쪽에서 당신을 물들게 할 복잡성 계층을 추가합니다 ... 미안하지만 * "전문 프로그래머"*는 그것을 위해 복잡성을 추가하지 않습니다. –
이것은 복잡성이 아니라 구조와 조직이며, 논리와 관점의 분리 관리를 돕는 것이 아닙니다. ob_start를 사용하면 전송 된 헤더를 캡처하지 못합니다. ob_start를 사용하면 출력을 캡처 할 수 있습니다. 여러 헤더가 전송 된 경우 애플리케이션 아키텍처 표준에 위배됩니다. 보기! = 논리 – RobertPitt
- 1. 코드가 실행될 때까지 중지
- 2. JS가 완료 될 때까지 페이지 표시를 어떻게 지연합니까?
- 3. 함수가 실행될 때까지 jQuery 대기
- 4. iPhone이 코드가 실행될 때까지 대기합니다.
- 5. PHP는 콘솔 출력을 읽습니다.
- 6. AS2 : 프레임을로드하기 전에 actionscript가 실행될 때까지 기다립니다.
- 7. wget 헤더 출력을 리디렉션
- 8. Internet Explorer 8은 페이지가 완전히 렌더링되고 자바 스크립트가 실행될 때까지 대기합니다.
- 9. NSTimer가 다시 실행될 때까지 앱을 정지 시켰습니까?
- 10. 델파이 : bat-script가 끝까지 실행될 때까지 기다려주십시오.
- 11. 스크립트가 완료 될 때까지 기다리지 마십시오.
- 12. 자바 스크립트가 실행될 때마다 Firebug가 곧 중단됩니다.
- 13. 하나의 PHP 스크립트가 다른 스크립트를 시작하고 출력을 캡처하는 방법은 무엇입니까?
- 14. PHP 출력을 명령 줄
- 15. ASP.NET에서 생성 된 모든 자바 스크립트가 실행될 때 감지
- 16. (PHP) cron 작업으로 스크립트가 실행될 때 파일 이름 (또는 파일 경로)을 얻는 방법은 무엇입니까?
- 17. PHP는
- 18. PHP 출력을 소리 (삐)로 만드는 방법?
- 19. PHP 요청에서 긴 헤더 선언을 처리하려면 어떻게해야합니까?
- 20. nawk가있는 스크립트가 화면에 출력을 인쇄하지 않습니다.
- 21. pstream으로 전체 스트림 출력을 얻는 방법은 무엇입니까?
- 22. 여러 개의 NSURLConnection이 성능을 지연합니까?
- 23. 전체 페이지가로드 될 때까지 되돌아 간다.
- 24. 내가 PHP 헤더 만이 아니라 전체 페이지에 DIV
- 25. PHP는
- 26. 자바 스크립트가 완료 될 때까지 스팬 (또는 div) 숨기기
- 27. PHP 스크립트가 조기에 종료됩니다.
- 28. PHP shell_exec 스크립트가 끝나기를 기다리시겠습니까?
- 29. PHP는 로딩이 완료 될 때까지 페이지를 업데이트하지 않습니다.
- 30. jquery to php (결과가 끝날 때까지 PHP 스크립트 대기)
가능 중복 [출력 버퍼링 무엇인가요? (http://stackoverflow.com/questions/2832010/what-is-output-buffering) – Jon
http://php.net/manual/ en/function.ob-start.php – kjy112
@ 존 : ** 이것은 복제품이 아닙니다. ** 출력 버퍼링이 예입니다. 그러나 이것은 완전히 다른 두 가지 질문입니다. –