PHP、Smarty、ケータイサイトについて発信中。書籍 「Smarty動的webサイト構築入門」(技術評論社) 好評発売中
RSS icon Home icon
  • 処理時間が長いとき、すばやくページ表示したい(1)


     フォーム送信後、サーバ側の処理時間が長いとき、なかなか画面が変わらないことがあります。サーバ側の処理時間が長いときでも、すばやくページを表示するいくつかの方法について説明します。

    (1) もっとも簡単な方法

     ページ遷移は form.html ⇒ task.php ⇒ thanks.html  とします。

     task.phpは「処理中です」と表示し、本来の処理をし、thanks.htmlへページ移動します。

    <html>
    ~省略~
    処理中です
    <?php flush(); ?>
    <?
    sleep( 10 ); // 長い処理のフリ
    ?>
    <meta http-equiv="refresh" content="0; url=thanks.html" />
    </html>

     flush()を呼ぶと、すぐに「処理中です」がブラウザに返されるので、フォーム入力画面が「処理中です」に切り替わります。長い処理が終わった後に、thanks.htmlへページ移動するための<meta>タグがとんでもないところにありますが、IEもFirefoxも許容してくれます。

     最近は、処理と表示を分けていることが多いので、この方法は使えないかもしれません。また、htmlとphpが混在することになるので、デザイナ、プログラマの両方から嫌な顔をされるかもしれません。

     なお、IE6では、flush()前に、約300バイト以上の文字列が必要でした。

    実験ページ(対策なし)
    実験ページ(1) 

    2009-03-22 aoki No comments 02.PHP

    Leave a reply