2010-04-07 6 views
3

PHP에서 Echo 또는 Print 함수는 PHP가 무언가를 사용 중일 때 (예 : 말풍이나 그와 비슷한 웹 서핑과 같은 경우) 아무 것도 표시하지 않습니다. PHP가 통화 중일 때 echo가 아무 것도 표시되지 않는 이유는 무엇입니까?

나중에 내가 명령 줄에서 PHP를 실행 출력 보여 않습니다 PHP를 발견 :

php myscript.php 

을하지만 지금은 내가 너무 명령 줄에서 어떤 출력을하지 않습니다! 어떤 종류의 트릭이나 설정이 PHP 출력을 보여 주도록해야합니까?

답변

6

기회가 있습니다 ... PHP에서 출력을 강제로 flush()보고 시도,하지만 여전히 웹 서버에서 개최받을 수 있으므로 도움이되지 않을 수 있습니다 그리고 웹 서버)를 보내고 아직 실제로 브라우저에 보내지 않습니다. 우리는 우리의 웹 사이트에 특정 디버그 모드에서 페이지를 실행하는 경우

/** 
* Act as a "breakpoint" in the code, forcing everything to be flushed to the browser 
*/ 
function breakpoint() { 
    global $debug; 
    if ($debug) { // So that it doesn't slow down extracts 
     ob_flush(); 
     flush(); 
     sleep(.1); 
    } 
} 

$debug 물건입니다 : 내가 줄 수있는 최선의 제안을 내 코드에서이 체크입니다.

당신이 필요로하는 가장 중요한 두 가지는 PHP의 버퍼를 웹 서버의 버퍼로 보낼 ob_flush()과 서버를 브라우저로 덤프시킬 flush()입니다. (참고 : 브라우저가 아무것도 표시하기 전에 캐시하면 아무 것도이를 막을 수 없습니다.) sleep은 과부하가 발생하지 않도록하고 올바르게 플러시 할 수있는 기회를 제공합니다.

참조 : http://ca.php.net/manual/en/function.ob-flush.phphttp://ca.php.net/manual/en/function.flush.php

+0

절대적 권리, 내가 트릭을 할 수 있습니다) (은 ob_end_flush 사용, 감사합니다 – EBAG

3

PHP와 웹 서버 모두 에코와 프린트의 출력을 캐싱 할 가능성이 있습니다. 이렇게하면 스크립트가 완료 될 때까지 출력이 나타나지 않는 경우가 많습니다.

, 그것은 PHP 모두 (결과를 캐싱 것

관련 문제