2012-04-19 3 views
0

print_r()을 라이브로 표시 할 수 있습니까? 살아있는 것은 스크립트가 실행되는 동안 의미합니다. 스크립트를 끝내기를 기다리지 않으려 고합니다. 나는 분명하다. 답장을 미리 보내 주셔서 감사합니다. 건배. MarcPHP - print_r() live를 표시하는 방법

+2

당신이나 PHP 또는 사용자 에이전트가 출력물을 버퍼링하지 않는 한 그렇게하는 것이 기본값입니다. – Jon

+0

그래, 그냥 너무 큰 배열을 인쇄하지 마십시오, 그것은 수백만 항목에서 연령이 걸립니다. – ewanm89

+0

.. 또는 웹 서버. –

답변

2

아마 Apache와 같은 웹 서버를 통해 PHP를 사용하고 있습니다.

웹 서버에는 캐싱이 구현되어있어 더 큰 블록으로 데이터를 전송하는 경향이 있습니다.
브라우저에는 캐싱 기능이 구현되어 있으며 때때로 웹 사이트로드가 끝날 때까지만 데이터를 새로 고칩니다.
는 마지막으로 PHP는 캐싱을 내장하고있다.

HTTP 사람들이 발명 한 "AJAX"그 이유는과 페이지가 된 후 자바 스크립트가 변경/라이브 이벤트를 폴링하기 위해, 좀 더 정적 페이지처럼 표시 "라이브"을 위해 만든되지 않았습니다 짐을 실은. 당신이 할 수있는 일

:

  1. 는 PHP의 데이터가 명령 flush()
    implicit_flush 당신이 볼 수도라는 PHP 설정도 있습니다을 사용할 수있는 웹 서버로 전송되어 있는지 확인합니다.
  2. 웹 서버는 gzip/mod_gzip을 사용하여 출력을 압축 할 수 있습니다. 해당 동작을 해제해야합니다.
    어쩌면 그것을 할 것입니다 : 당신이 브라우저가로드하는 동안 그것을 표시됩니다 더 가능성 </table> 등 간단한 "테이블"내부의 데이터를 넣을 경우 @apache_setenv('no-gzip', 1);
  3. , 그냥 순수 텍스트보다 약간 더 많은 콘텐츠를 추가합니다. 이것에 대한 PHP는 INI에서
  4. 봐는 :
    output_buffering = Off
    zlib.output_compression = Off
    당신은 (@ini_set('zlib.output_compression', 0);)
  5. 가 바이트의 일정 금액을받을 경우 일부 브라우저는 데이터를 표시 너무 런타임에이 작업을 수행 할 수 있습니다.
    내가 올바르게 기억한다면 256 바이트가 도움이 될 수 있습니다.
    str_repeat(" ", 256); (다른 사람 또는 아무것도)

내가 다음 단계는 문제를 해결하는 데 도움이 수 있지만 내 경험에서 결과가 완벽하지 것을 추가하고 싶습니다. 새로운 브라우저와 브라우저 버전이 다르게 작동 할 수 있습니다.

+0

감사합니다. 존 감사합니다. – Marc

관련 문제