- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:php 処理が長い時の動作)
php処理が長い時の動作
このQ&Aのポイント
- phpで処理時間が長い場合の動作について、フォームからPOSTでコードを送信し、ダウンロード処理が終わるまでの待機ページを作成したい。
- ダウンロード処理を開始する前に時間がかかることを知らせるメッセージを表示することも考えています。
- フォームから送信すると待機ページに切り替わり、ダウンロード中と表示されている部分がダウンロード終了と同時にダウンロードボタンになるような動作を実現したい。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
noname#244856
回答No.2
PHPだけで「徐々に表示する」という処理を行うことは可能です。有名なPHP製CMSであるWordpressの設定画面もこれを採用していますね。 処理途中で結果を出力 http://so-zou.jp/web-app/tech/programming/php/sample/progress.htm 【補足】 ・php.iniの設定によっては何もしなくてもob_start();された状態になっていますが、最初に while (ob_get_level()) { ob_end_clean(); } としておけば ob_flush() は不要です。 ・@演算子でエラー抑制しなくても上記のようにちゃんとバッファリングネストレベルを把握した上でコーディングすればエラーは絶対に発生しません。バッファリングのことを理解しないで初心者が煩雑に書いたコードが流布された結果でしょう。 ・PHP5.4以降でセーフモードは消滅しました。 ただ、こういうやり方自体がレガシーすぎるのは言うまでもありません。モダンなほとんどのサイトはJavaScriptを併用して非同期処理を行っているはずです。どうせスクロールさせるにはscriptタグの生成が必要ですし、最初から非同期でやればいい話です。 JavaScript(jQuery)からPHPのAPIを利用する http://qiita.com/mpyw/items/62e6e415f86eb30a5ff4
その他の回答 (1)
- t_ohta
- ベストアンサー率38% (5239/13707)
回答No.1
POSTのデータを受取る処理と、ダウンロード処理を別プログラムに分けて処理するしかありません。 同期処理である以上、全ての処理が終わるまでサーバから応答を返す事はありませんので、非同期で処理しましょう。
お礼
実現できました。ありがとうございました!