*ファイルのダウンロードのメモリ消費を減らす [#a74b23fb] -ページ: [[BugTrack2]] -投稿者: [[鈴木孝征]] -優先順位: 低 -状態: 提案 -カテゴリー: プラグイン -投稿日: 2005-05-21 (土) 15:38:30 -バージョン: **メッセージ [#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}; #comment