2011-12-23 2 views
0

로드 바 애니메이션이있는로드 메시지를 표시하려고하므로 스크립트가 작동하지 않는다는 것을 사람들이 알 수 있습니다.PHP 로딩 화면을 표시하려고하지만 스크립트가 실행될 때까지 표시되지 않습니까?

비록 HTML이 PHP 스크립트의 맨 위에 있지만 스크립트가 완전히로드되면 HTML 만 표시됩니다.

PDF를 생성하고 DB에 데이터를 삽입 한 다음 외부 전자 메일로 MIME 전자 메일을 전송하므로 스크립트가 완료되는 데 약 40 초가 걸립니다 (가장 긴 부분 소요). 여기

은 로딩 메시지를 표시하는 HTML입니다 :

 <div class="grid_16"> 
       <fieldset> 

        <h2> 
         Processing <img src="img/loading.gif" alt="loading animation"> 
        </h2> 

       </fieldset> 
    </div> 
<?php 

//rest of php page 

그들은 참을성과 F5 등

감사

타격으로 시작되지 않도록 내가 사용자에게이를 표시하는 방법 어떤 생각

메리 크리스마스!

답변

1

PHP가 서버에로드 된 후 브라우저로 전달됩니다. 즉, 페이지로드가 서버에서 완전히 완료 될 때까지 브라우저에 전달되어 표시되지 않습니다.

javascript와 ajax를 사용하면됩니다. 먼저 HTML에서 느린 PHP를 제거하고 페이지를 표시하십시오. 그런 다음 일단 ajax를 통해 PHP 스크립트를로드 한 다음 문서에 쓰기를 완료했습니다.

+0

어쨌든 JS없이 이것을 할 수 있습니까? 사용자가 JS를 사용할 수 없게되면 어떻게됩니까? – kaleeway

1

제 친구, PHP는 스크립트 해석 (1)이 끝나면 출력을 보냅니다. 따라서, gif 을 이전 페이지 (일부 JavaScript 사용)을 oldpage.php에서 slownewpage.php로 이동시키는 이벤트와 함께 실행시키는 것이 좋습니다. 그래서, PHP는 새로운 HTML 결과를 보내고 브라우저는 작업 할 무언가가있을 때까지 gif가 사용자 앞에 머물러있게됩니다.

(1) 당신이 그를 당신이 코드를 Gzip으로 압축 특히 경우에 당신이 아마 (PHP 내에서) 직접 출력 버퍼링하기 때문에 원하는 부분 후 ob_flush

+0

나를 몇 가지 코드 예제로 연결해 주시겠습니까 – kaleeway

0

실행 flush(); 같은 뭔가 다르게 할 주문하지 않는 한. 다른 사람들이 말했듯이 페이지를로드 할 수 있고 결과도 자바 스크립트로 가져올 수 있습니다 (실제로는 더 나은 옵션 일 수 있습니다).

.. 왜 페이지로드 중에 긴 메시지를 보내고 있습니까? cron 작업을 수행 할 수 없습니까? (몇 초마다 확인하여 무언가를 보내야하는지 확인하십시오)? 나는 그들이 윈도우 용 cron 프로그램을 가지고 있다고 생각한다.

관련 문제