すみません、ヒントを教えて下さい。
素人で言葉足らずなのでお手数おかけできません。
PHPでDBから大きめのデータを引き出してきて、表形式で表示した後、ユーザがブラウザから表の値をいじりそれをエクセルでダウンロードするというコードを書いてます。
さて質問ですが、一度目の読込、編集し、ダウンロードする部分は問題ないのですが、ダウンロード前に再度DBからデータを読み込んで、編集した値をPOSTで取り込んでつき合わせて、Excelの出力に生成しなおしているのですが、データ量が多くて遅い…
そこで、これらを効率良く行う手段がわかればヒントでいいので教えて下さい。現状では
1.全ての表をInput形式で表示し、編集後すべての値をPOSTしてDBの再読み込みはしない(現段階では必要な物のみINPUT出力、その他のデータはDBから再読み込み→突き合わせ→Excel)
2.何かしらのキャッシュを利用する。Cookie? Session? SQLiteとか? 素人なんで調べてみないとわかりません
という形でレスポンスが向上できるか検討していこうと考えていますが、それ違うだろ!みたいなツッコミよろしくお願いします。
★みなさん、懇切丁寧にありがとうございます★
ちょっとレスポンスまで数日くださいませ(--;)ホント質問しといて申し訳ありません
★★★
すみません、本当に手が回らなくて返信できない状態です。必ず返信いたします。
みなさん、本当に申し訳ありませんm( ;)m m( ;)m m( _;)m
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答5件
0
ベストアンサー
・アンケートの回答テーブルにユニークなIDを振る-A
・アンケートのIDに対応した修正分のデータを保存するテーブルを別に作る。-B
・ブラウザから修正したものは一度にPOSTするのではなく、修正される都度Ajaxでサーバに送ってBに保存する。changeやblurのイベントで送信するか、1レコードごとボタンをクリックして明示的に送信。
・ダウンロードする際はABのテーブルの情報をマージしながらブラウザに書き出し。
とか、いかがでしょう?
投稿2015/07/27 08:56
総合スコア162
0
前提として、何が遅いかは計測しているでしょうか?
もし計測していなければ、どこを改善すべきか分からないので、
ログを入れるなどして各処理の所要時間を測ってみてください。
(DBからの読み込み、突き合わせ、Excelへの出力ぐらいに分ければ良いと思います。)
所要時間が分かっていれば、教えていただけないでしょうか。
投稿2015/07/27 08:23
総合スコア1546
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/07/27 09:34
2015/07/27 09:44 編集
2015/07/27 10:08
2015/07/27 10:13
2015/07/27 10:23
2015/07/27 15:09 編集
2015/07/27 15:08
2015/07/27 15:17
2015/07/28 02:38
2015/10/13 06:42
0
ブラウザや環境によってpostできる数に限りあるので、まともに全部値を投げるのはデータ量によっては、あまり好ましくないかもしれないですね。
思いつきなんで穴だらけですが、例えば
①DBから読み込んだ時点でダウンロード用のファイルに書き出す
②ユーザーが任意の項目を修正したら、変更が加えられたそのイベントを検知して、非同期で①で保存したファイルを修正
③ダウンロードするときにはそのファイルをまんダウンロード
などでしょうか
投稿2015/07/27 07:49
総合スコア62
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/07/27 08:11
2015/07/27 09:32
2015/07/27 10:10
2015/07/27 10:27
0
1.全ての表をInput形式で表示し、編集後すべての値をPOSTしてDBの再読み込みはしない(現段階では必要な物のみINPUT出力、その他のデータはDBから再読み込み→突き合わせ→Excel)
突き合せする分軽くなるだろうとは思いますが、複数人が同時に編集してたりすると不整合起きませんか?
2.何かしらのキャッシュを利用する。Cookie? Session? SQLiteとか? 素人なんで調べてみないとわかりません
これも複数人が同時に編集してたりすると不整合起きませんか?
思いつくネタとしては
1.保存する処理とExcelファイルを取得する処理を別のボタンで起動すると保存処理とExcel出力処理で分かれるので多少は軽く感じるようにはなるかも
2.突き合せの処理の見直し。Excel側で突き合せようとすると処理が重い。DB側(SQL等)に任せるように変更する
といったところでしょうか。
投稿2015/07/27 07:22
総合スコア148
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/07/27 07:30
2015/07/27 07:55
2015/07/27 08:55
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/07/27 10:00
2015/07/27 10:05 編集
2015/07/27 10:20 編集
2015/07/27 13:17 編集
2015/07/27 13:22
2015/07/27 16:33
2015/07/28 00:08
2015/07/28 02:41 編集
2015/07/28 07:33
2015/07/30 09:57
2015/07/30 10:43
2015/10/13 06:48