青木ITプランニング
PHP、Smarty、ケータイサイトについて発信中。書籍 「Smarty動的webサイト構築入門」(技術評論社) 好評発売中
-
処理時間が長いとき、すばやくページ表示したい(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ともに、処理と表示を分離しやすくなりました。
Leave a reply



最近のコメント