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


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

    (2) まだまだ簡単な方法

     前回の(1)ではtask.phpへのリクエスト1回だけで、「処理中です」の表示と、長い処理をしていました。今回は、これを2回のリクエストに分けてみます。ページ遷移は、form.html ⇒ task_prepare.php ⇒ task_main.php ⇒ thanks.html  となります。

     task_prepare.php は、form.htmlから送信されたフォーム変数をセッションに保存します。これはほとんど時間がかからないので、すぐに「処理中です」と表示することができます。そして、本来の処理をする task_main.php へページ移動します。

    <?php
    // $_POSTや$_FILESや$_SESSIONなどの処理
    ?>
    <html>
    <head>
      <meta http-equiv="refresh" content="0; url=task_prepare.php" />
    </head>
    処理中です
    </html>

     task_main.php は、セッション変数を読み込み、本来の処理をします。その後、thanks.htmlへページ移動します。

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

     ユーザから見ると、(1)とほとんど同じです。一瞬、アドレスバーが変化することに気づくかもしれません。開発者から見ると、task_prepare.php、task_main.phpともに、処理と表示を分離しやすくなりました。

    実験ページ(2)

    2009-03-29 aoki No comments 02.PHP

    Leave a reply