2011-01-30 2 views
0

나는 두 개의 서로 다른 서버와 같은 스크립트가 :for 루프로 들어가기 전에 PHP가 HTML 코드를 표시하지 않는 이유는 무엇입니까?

echo "<div style=\"some style\">whatever</div>"; 
for($i=0;$i<150000;$i++) 
{ ... } 

지금, 나는 나의 첫 번째 서버에 PHP 스크립트가 저에게 직접 표시됩니다 것을 깨달았다를 다음 for 루프를 통과 시작 무엇 이건. 두 번째 서버는 div를 표시하지 않지만 직접 루프로 시작합니다. 하지만 먼저 HTML 코드를 표시 한 다음 스크립트의 나머지 부분을 수행하려면 스크립트가 필요합니다.

변경할 수 있습니까?

감사합니다.

+1

당신이이 브라우저에 의해 렌더링되는 것 또는 실제로 서버를 통해 어떻게 출력되고 어떻게 언급하는 대한 php.ini? –

+0

서버에서 어떻게 출력했는지! PHP 스크립트가 일을하는 동안 "기다려주십시오 ..."라는 메시지가 필요합니다. 그러나 스크립트가 끝난 후에 서버가이를 보여줍니다. – phpheini

답변

1

당신이 웹 사이트에 도착했을 때 무슨 일이 일어나는가 : 서버로 연결되는 브라우저,이 파일을 가지고 있습니까? 서버가 요청을 처리하고 파일을 검색합니다. 서버 공지 사항, 안녕하세요, PHP 스크립트가있어 구문 분석 할 수 있습니다. 스크립트가 무한 루프가됩니다.

스크립트를 브라우저에 다시 보내기 전에 스크립트를 완료해야 출력이 비어있게됩니다.

+0

네, 맞습니다. 어떻게 PHP 스크립트가 일을하는 동안 사용자가 "Please wait ..."라는 메시지를 갖게 될까요? – phpheini

+0

@phpheini 글쎄, 정확히 무엇을하고 싶은지 모르겠다.하지만 자바 스크립트와 AJAX로 할 수있다. javascript로 정상적인 페이지를로드하고,이 스크립트를로드하면 며칠이 걸릴 수 있지만 그렇지 않다. 당신이 다른 페이지에서 사용자에게 무엇이든 보여줄 수있는 것 같이 문제가됩니다 .. 분명하지 않다면 xD를 말해주세요 - jQuery는 javascript를 사용하여 페이지를 동적으로로드하는 멋진 래퍼입니다 –

3

for -loop 전에 echo 바로 뒤에 flushing을 시도해야합니다.

+0

내 생각에'output_buffering' 설정 지시어는 각 서버마다 다릅니다. 그렇다면이 대답으로 해결됩니다. – Phil

+0

문제는 php.ini에 액세스 할 수 없지만 php_value output_buffering을 "0"으로 htaccess 파일에 넣으려고했습니다. 그 결과, 서버가 전혀 반응하지 않아서 일반적인 오류 메시지 (500 내부 서버 오류)가 나타났습니다. 가능한 조합으로 ob_flush(), flush(), ob_start(), ob_end_flush()를 시도했습니다. 그러나 아무것도 바뀌지 않습니다. – phpheini

관련 문제