現在、PHPでWEBサイトを作成しています。その中でページを表示させるのに非常に時間がかかるページがあります。画像が重いというのではなく

サーバ側での検索処理の時間がかかるものです。時間は10~20秒程度でこれは変更できないとします。
そこで、その待ち時間にプログレスバーなどを表示させて「待っていること」、「処理が進んでいること」を明示的にわからせようとしています。
PHPでプログレスバーなどを作るのは可能なのですが、100%に達した後にそのプログレスバーを表示させていた場所に検索結果を表示させるとなると
ページをリロードなどをして消さなければなりません(よね?)できればIFRAMEは使用したくありません。
そこで一般的に皆さんがどうしているのかをお聞きしたいのと、詳しく説明しているページなどがありましたら教えていただきたく、質問させていただきました。
よろしくお願いします。

回答の条件
  • 1人10回まで
  • 登録:
  • 終了:2007/01/22 23:30:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答3件)

id:Sampo No.1

回答回数556ベストアンサー獲得回数104

ポイント27pt

私なら、プログレスバー部分をdivで括っておいて、body要素のonLoadでそのdivを隠してしまいます。

id:kamesann

早速のご回答ありがとうございます。

なるほど。

こんな方法があるんですね。

是非ためしてみます。

2007/01/15 23:47:34
id:nev No.2

回答回数77ベストアンサー獲得回数4

ポイント27pt

画面自体はすぐに「waiting...」みたいなページを表示します。

検索処理はforkして別プロセスにやらせておきます。

waiting...の画面(HTML)には、一定時間毎にサーバに検索処理が完了したか確かめに行くようなjavascriptをAjaxぽく埋め込んでおきます。完了していたら、画面を完了に書き換えるか、完了と表示されるような画面にリダイレクトしてやります。

サーバ側はjavascriptからのアクセスの受け皿が必要です。検索処理が完了しているかどうかをクライアントに返してやるような処理です。

こんな感じで分かりますでしょうか。

id:kamesann

ありがとうございます。

サーバとページで処理を平行してやらせておく方法、理解できました。

>画面を完了に書き換えるか

これはjavascriptで書き換える感じなのでしょうか?

2007/01/16 00:00:25
id:b-wind No.3

回答回数3344ベストアンサー獲得回数440

ポイント26pt

Ajax で終了検知。プログレスの表示自体を JavaScript で消してしまうのが今流なんでしょうね。


自分は古いので meta タグの Refresh でリロードさせてしまいますが。

id:kamesann

JavaScript or Refresh 普段JavaScriptを使用していないので表示が消せるというのがわかっただけでも大きいです。

ありがとうございます。

2007/01/16 00:05:08

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません