#author("2017-08-23T06:15:26+09:00","","")
#author("2017-08-23T06:16:55+09:00","","")
*ファイルのダウンロードのメモリ消費を減らす [#a74b23fb]

-ページ: [[BugTrack2]]
-ページ: [[BugTrack]]
-投稿者: [[鈴木孝征]]
-優先順位: 低
-状態: 提案
-状態: 完了
-カテゴリー: プラグイン
-投稿日: 2005-05-21 (土) 15:38:30
-バージョン: 
-バージョン: 1.4.5
-リリース予定バージョン: 1.5.2

**メッセージ [#if8c9aaa]
VineLinux3.1をOSにしてpukiwikiを使用しています。~
添付書類(PDFファイル7MB)のダウンロードがうまくできなくて、エラーを見てみたらメモリが使い果たされてしまっていました。~
vineの設定ではphp.iniにoutput_handler=mb_output_handlerがセットしてあって、送信されるファイルサイズの3倍ぐらいのメモリが使われてしまうようです。~
この問題を解決するためにattachプラグインのreadfile関数を実行する前にob_end_flush()を入れてもらえないでしょうか。~
私の環境ではこれでメモリ消費の問題は解決できました。
----
-参考:[[BugTrack2/102]] -- [[三浦克介]] &new{2005-08-29 (月) 21:33:41};

- 別の視点からのメモ。PHP の設定"output_buffering" が有効になっている場合で、何らかのデータ((var_dump() の消し忘れとか、改行が出力されてしまったとか))が出力待ちになっている状態だと、header がまだ出力されていないので、pkwk_common_headers() からチェック用関数pkwk_headers_sent() が呼ばれても当然スルーして、出力待ちデータとファイルのデータを合体させたものを出力してしまいます。チェックさえ終わってしまえば問題ない事なんですが。&br;ちなみに、「pkwk_common_headers() の手前でob_end_flush() をエラー制御付きで呼んだ場合、[[BugTrack/738]] が正常に動くのか」などは試してません。 --  &new{2009-04-26 (日) 16:10:57};
- 関連?: [[official:質問箱4/448]] --  &new{2009-04-26 (日) 16:14:24};
- ふむ、この提案は完全ではありません(困った人向けのhackになっているかもしれませんが、一般解になっていません。)。通常必要が無いob_end_flush()をコールする必要がある環境かどうか(をチェックする方法があるのかどうか、それをどう実装すべきか)検討が無いからです。マニュアル [[ob_end_flush()>http://jp2.php.net/manual/ja/function.ob-end-flush.php]] と、その User Contributed Notes 欄も参考にして下さい。-- [[henoheno]] &new{2009-04-29 (水) 09:56:00};
- [[BugTrack/2102]] の対応で出力バッファリングをOFFにしましたのでこちらもResolveします。HTMLを返すような通常のPHP動作ではoutput_bufferingは有効ですが、ファイル送信のようなケースでは意図的にこのレイヤのバッファリングをスキップするのはそれほどおかしくない対応だと思います -- [[umorigu]] &new{2017-08-23 (水) 06:15:26};

#comment

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Site admin: PukiWiki Development Team

PukiWiki 1.5.3+ © 2001-2020 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u12. HTML convert time: 0.031 sec.

OSDN