• ベストアンサー

PHPでDB処理中にプログレスバーを出したい

Ajax初心者です。 PHPでDB処理が長くブラウザタイムアウトが発生してしまう為 DB処理中はブラウザに処理中画面(プログレスバー表示有り)を 表示したいのですが、Ajaxを使ってプログレスバーを動かす 方法があれば方式を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

「処理中」を表示することは簡単です。 まず、ajaxで結果表示しようとするspan(もしくはdiv)に 「処理中」を表示し、その後その領域に結果を呼び出すだけです。 (呼び出させるまでは処理中と表示されます) しかし、処理がどのくらい進んでいるか・・・たとえば 全体処理の○○%・・・など表示するのかなりめんどうです。 よほどのことがないかぎりやめたほうがよいでしょう。 とくにsqlの処理終了予測はきわめて面倒なことだと思います。

omisoshill
質問者

お礼

ありがとうございました。 SQLの処理時間を予測するのはサーバの負荷等にも左右されそう ですのでプログレスバーの表示はしない方向で検討しなおします。

その他の回答 (1)

  • asuncion
  • ベストアンサー率33% (2126/6288)
回答No.1

タイムアウトが発生しないよう、 データベース処理のロジックなどを見直す予定はありますか? プログレスバーを表示する方法が見つかったとしても、 問題の本質的な解決につながらないですよね。

omisoshill
質問者

補足

データベースの処理ロジックの見直しは行っておりますが 秒オーダーで結果を返せる物では無いと思ってます。

関連するQ&A

  • phpとdb

    phpとdb お世話になります。 PHPとDBについて質問させていただきます。 例えば、PHPプログラムで、URLを指定すると内部リンクを全て取得するプログラムがあるとします。 その出力結果はブラウザ上に表示されます。その出力結果をDBへ直接書き込みたいと考えてます。 DBについてはほとんどいじったことがないのでよくわかりません。 どなたか詳しく解説していただければ幸いです。 またそういったPHPとDBとの連携をしているわかりやすサンプルコードなど公開されているHPをご存知でしたら教えてください。 環境はWindowsでDBはphpmyadminを利用しようと考えてます。 よろしくお願いいたします。

    • 締切済み
    • PHP
  • Access プログレスバー 画面固まる

    Access 2007 VBA でファイル出力処理が長いため、以下を参考にしてプログレスバーを設置しました。 http://www.moug.net/tech/acvba/0060023.htm 1,000件程度だと進行状況がちゃんと表示されるのですが、10,000件単位になるとAccess自体が応答せず、プログレスバーも途中で止まったまま、だけど処理は裏で動いているようでファイル出力自体は時間はかかりますがちゃんと出力されます。 DBアクセスを含んだファイル出力処理なので、多少時間がかかっているのかと思います。 また、私の技術の低さから処理自体に時間がかかってしまっていることもあると思いますが、私の技術では処理自体を変えて早くするのは限界です。 Access画面が固まらず、リアルタイムでプログレスバーを進行させる手段等ございましたらご教授いただけるとありがたいです。

  • DB接続関連の処理をまとめたい

    DB接続処理関連の処理をまとめたいと考えています。 PHP4 + Mysql 4 Pear DBを使用中 おそらく、common.phpとかに connectDB()などと書くものだと思うのですが 詳細がわかりません。 なにか参考になるようなものはありませんか? とりあえず、1つのphpからDBに接続して 値を表示するところまではできました。

  • サーバー処理のあるwebページがあったとしてサーバー処理のあとクライア

    サーバー処理のあるwebページがあったとしてサーバー処理のあとクライアントにブラウザ画面が表示されたとします。 ※たとえば、検索画面ー>検索結果一覧みたいなながれで このとき検索結果一覧画面で更新(F5)をすると、サーバー処理をもう一度やった後ブラウザ画面が表示されますよね? Ajaxのような通信をおこなって結果をブラウザに表示している場合、更新してしまうとAjaxを行う前のブラウザ画面になってしまうと 思うのですが、Ajaxを無数に行った後の画面を更新してもAjaxを行った結果が表示されるようにするには、どのようにするのでしょうか? 無数なのでクッキーやIEのUserDataなどは使えません。また、ライブラリやフレームワークでそういう機能が用意されているのが あればぜひ教えてください。

    • ベストアンサー
    • AJAX
  • 探しています~プログレスバーのまき戻しについて

    何か処理中のものがあり、進捗状態がプログレスバーに表示されているのですが、キャンセルボタンを押すとその処理を中断できて、それまで進んでいたプログレスバーの進捗が徐々に減っていき、最終的にゼロに戻るという仕組みの画面というか、UIを探しています。 ソフトのインストールとかファイルのコピーとか色々探しているのですがなかなか見つかりません。 似たような動作をするプログラムを作りたいので参考にしたいのですが・・・。 どなたか知っている方がいれば教えてください!

  • Ajax、PHP、MySQLでDBからデータをWEB上に表示するサイト

    Ajax、PHP、MySQLでDBからデータをWEB上に表示するサイトでDBのデータが変わるとWEBサイトの表示も変わるようにするにはどうすればいいのでしょうか。

    • ベストアンサー
    • AJAX
  • AJAX→PHP -DB(MySQL)- PHP→AJAXのフローについて

    Yahoo! User Interface の DataTable Control を使った編集可能なリスト作成を考えています。 しかし、Ajaxでの入力値のPHPへの投げ方、また、DBから受け取った値をAjax(DataTable Control)で表示させる方法とも、やり方が全くわかりません…。 (Jasonという形式に成型して出力させる??) YUIを使用して外部テキストファイルを表示してみたりアニメーションを動かしてみたり、Ajax初心者なりに1ヶ月ぐらい試みてみましたが、DataTable Controlについては今のところ全く成果なしで困り果てています…。 どなたか勘所のある方、ご教示頂けませんでしょうか? 宜しくお願いします。 http://developer.yahoo.com/yui/examples/datatable/dt_cellediting.html

  • web画面から呼び出したphp処理を途中キャンセル

    現在、phpでwebシステムを作っています。 画面上のボタンの押下イベントでphpのファイル出力処理を呼び出し、 「処理中」の文字列と「キャンセルボタン」が表示された別ウィンドウを起動させるのですが、 その別ウィンドウで「キャンセル」ボタンを押された時の、phpを中断させる処理が分かりません。 ajaxの非同期通信でphpを呼び出して処理中画面を表示させるところまでは分かるのですが、 その後に処理中断させる時にはど、どうすれば良いのでしょうか? どのphpモジュールを終了させるのか特定できればと思ったのですが、その方法も分からず… それかスレッドとかを使えばいけるのでしょうか?(スレッドもよく分かってませんが…;) 手詰まりで大変困っています。ヒントだけでもご教授いただければ本当に助かります。 どうぞよろしくお願いいたします。 -------- phpのバージョン:5.0 ajaxライブラリ:prototype.js 6.0

    • ベストアンサー
    • PHP
  • PHPの設定 エラー処理について

    当方PHPの初心者です。 現在HTML上でPHPの動作をさせているのですが 一部の処理で【Fatal error: Call to undefined function】というエラーがでて処理が途中で止まってしまいます。 エラー文自体は正しく、元々テスト環境でPHPを動作させているので、本番のDBや該当ファイルが無い為にエラーとなっています。 ただ、ステージングという扱いにしてソースをそのままでアップさせたいので、エラーが必ず出る箇所を無視して先に進めたいと考えています。 エラーが起こる部分をコメントアウトする事は二度手間になり、本番化の場合にヒューマンエラーが発生するのを防ぐ為です。 そこでご相談なのですが、PHP処理の時に該当ファイルが無い等のエラーを無視してそのまま続行する。 方法はありますでしょうか。 通常の処理は動作確認済みです。 <?php echo date('Y年m月d日'); ?>等 エラーが発生するのは下記のような場合です。 <?php e($this->renderElement("サーバーが違うので存在しない")); ?> 色々情報を探ったのですが中々解決策をつかめず・・ どなたかお力添えを頂ければありがたいです。

    • 締切済み
    • PHP
  • PHP+MySQLでの排他処理とDBクローズ

    <環境> Apache1.3.37 PHP4.4.6 MySQL4.0.27 PHPで、掲示板などのスクリプト作成を勉強しています。 これまで、ログをログファイルとして保存するように作成しておりましたが、データベースに保存するように変更している途中です。 そこで、教えていただきたいのは下記の2点です。 ・ロック処理の必要性 →ログファイルを作成するタイプの場合、同時アクセスによるファイル破損を防ぐため、ロック処理が必要でした。DBに変更した場合も同様に必要なのでしょうか? ・DBのクローズ処理 →最小限のソースを以下に記します。9行目のクローズ処理は必ず必要でしょうか?また、エラーが発生した場合、7行目で処理が終わるのですが、この直前にもクローズ処理を記入する必要があるのでしょうか? 1)<?php 2)$db = mysql_connect(host,user,pass); 3)mysql_select_db(db-name,$db); 4)$query = "INSERT INTO table(id,name) VALUES('1','なまえ')"; 5)if (!(mysql_query($query))) { 6) print = "書き込みに失敗しました。"; 7) exit(); 8)} 9)mysql_close($db); 10)?> 宜しくお願いします。

    • ベストアンサー
    • PHP

専門家に質問してみよう