2011-12-23 20 views
0

ローディングバーのアニメーションを含む読み込みメッセージを表示しようとしているので、スクリプトがうまく動作していないことが分かります。PHPで読み込み画面を表示しようとしましたが、スクリプトが実行されるまで表示されませんでしたか?

しかし、HTMLがPHPスクリプトの先頭にある場合でも、スクリプトが完全に読み込まれると表示されます。

PDFを生成し、DBにデータを挿入して外部のMXに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にユーザを移動させるイベントにすることです。したがって、gifはPHPが新しいHTML結果を送信し、ブラウザが動作するようになるまでユーザの前にとどまります。

(1)あなたは彼はあなたが(PHP内)に直接出力したい部分の後ob_flush

+0

いくつかのコード例にリンクしてください – kaleeway

0

実行flush();ようなものでそうやって注文する場合を除き、あなたのコードをgzippingしている場合、あなたはおそらく、特にバッファリングされているため。あなたは、他の人が言ったようにページを読み込むことができ、同様にjavascriptで結果を引っ張ることができます(実際にはこれはおそらく良いオプションです)。

..ページの読み込み中に長いメッセージを送信する理由を尋ねることはできますか?あなたはcronの仕事をしてもらえませんか(何かを送る必要があるかどうかを確認するために数秒ごとにチェックします)?私は彼らにもウィンドウ用のcronプログラムがあると思います。

関連する問題