2013-05-06 3 views
1

함수 상태를 루핑으로 표시하려고하지만 다음 상태가 표시되기 전에 이전 상태를 삭제하려고합니다. 현재 코드 :플러시 중에 출력 버퍼링이 가능합니까?

<?php 
@ini_set('zlib.output_compression',0); 
@ini_set('implicit_flush',1); 
@ob_end_clean(); 
set_time_limit(0); 

// Perform 1st function here 
echo "Retrieving Data..."; 
echo str_repeat(' ',1024*64); 
sleep(1); 


// Perform 2nd function here 
echo "Analyzing Data..."; 
echo str_repeat(' ',1024*64); 
sleep(1); 


// Perform 3rd function here 
echo "Done..."; 
echo str_repeat(' ',1024*64); 
sleep(1); 
// Clean all echos here.. 
?> 
<html> 
<head> 
// Dynamic head content as a result of the php functions above 
</head> 
<body> 
</body> 
</head> 

이제는이 방법이 작동하지만 모든 에코가 차례로 표시됩니다. 나는 다음 상태가 첫 번째를 바꿀 때까지 끝내고 html이 표시되기 전에 "완료"를 제거하고 싶습니다.

내가 시도 :

ob_start(); 
echo "Retrieving Data..."; 
echo str_repeat(' ',1024*64); 
sleep(1); 
ob_end_clean();  

그러나 그것은 작동하지 않았다. 이것이 가능합니까?

답변

0

줄을 \ r로 출력하십시오. 동일한 행에서 커서를 0으로 되돌립니다. 당신이 그것을 쓸 수있는 곳.

echo "Retrieving Data..\r"; 
sleep(3); 
echo "Analyzing Data...\r"; 
sleep(3); 
echo "Done...   \r\n"; 

내가 그렇지 않으면 명령 프롬프트를 통해 마지막으로 에코를 작성합니다 마지막으로 에코에 \ n을 추가.

+0

의 호환성을 확인할 수는 이전 버전의 브라우저 (IE9 사전)에 잘 작동하지 않도록 합리적으로 새로운 선택이다 차이가 있습니다. – GameDevGuru

+0

오, 당신은 HTML 페이지에서 그것을하고 싶습니다. 이것은 명령 행에서 작동합니다. – shapeshifter

+0

Google에서 진행률 표시 줄 스크립트를 검색하십시오. – shapeshifter

1

다음은 last-of-type 의사 CSS 선택기를 사용하여 모든 이전 진행 상태 메시지를 숨 깁니다. 그것은 당신이 경우에, 아니이 ..이 스크립트는 HTML 전에 실행 작동하지 않았다 Mozilla Developer Network

<html> 
<head> 
    <style type="text/css"> 
     #progress span { 
      display: none; 
     } 
     #progress span:last-of-type { 
      display: block; !important 
     } 
    </style> 
</head> 
<body> 
<div id="progress"> 
<?php 
for ($i =0; $i<=100; $i+=10) { 
    ob_start(); 
    echo "<span>$i%</span>"; 
    ob_end_clean(); 
    sleep(1); 
} 
?> 
</div> 
</body> 
</html> 
+0

나는 HTML을하기 전에 PHP를 실행해야한다. – GameDevGuru

+0

@GameDevGuru 나는 ​​그것을하기 전에 어떤 방법이 있다고 생각하지 않는다. HTML 페이지의 '' 태그 앞에 텍스트가 출력되지 않아야합니다. 내가 생각할 수있는 유일한 해결책은 위와 같이 처리 한 다음 처리 결과를 세션 변수와 같은 곳에 저장 한 다음 자바 스크립트를 사용하여 사용자를 다른 페이지로 리디렉션하여 데이터를 다시 사용할 수있게하는 것입니다. – Dracs

관련 문제