[PHP-users 28802] Re: CPU 負荷にあわせて mod_deflate のオン / オフ切り替えはできないか?
haward99@yahoo.co.jp
haward99 @ yahoo.co.jp
2006年 3月 24日 (金) 12:15:49 JST
わたなべです。
#ついでなのでphp-usersにもCC
なるほど。no-gzip環境変数ですか。
ちょっといろいろ見てみたら、
PHPのマニュアルのユーザーコメント欄にもこんなことが載ってました。
If you are using mod_gzip or mod_deflate to compress HTML output,
you're not able to send partial file to the browser....
To disable mod_deflate in PHP (if needed), you can tell Apache with this :
apache_setenv('no-gzip', '1');
(http://jp.php.net/manual/ja/function.apache-setenv.php より)
アプリケーションレベルでも実現できそうですね。
--- Hiroyuki OYAMA <oyama @ module.jp> からのメッセージ:
> ** Apache ユーザーズメーリングリスト **
> ** 注意:このメールへの返信は Apache-Users へ行きます **
>
> 小山浩之です。
> # 久しぶりだなぁ...
>
> On 2006/03/08, at 11:59, <haward99 @ yahoo.co.jp>
> <haward99 @ yahoo.co.jp> wrote:
> > Yahooでは、apache1.3+mod_gzipという環境で、
> > CPUのアイドルが10%を切るとmod_gzipがオフになるという
> > 仕組みを導入してるらしいです。↓
> > http://public.yahoo.com/~radwin/talks/yapache-apachecon2005.htm
> >
> > 自分の環境はapache2+mod_deflateなのですが、
> > 同様のことを実現できる簡易な方法ってないでしょうか?
>
> Yahooでこれを実現するためにどう実装しているかは置いといて、簡単
> な方法を一つ。
>
> 特定条件でApache内部の環境変数
> no-gzip
> をセットすれば、mod_deflateによる圧縮処理はスキップされま
> す。つまり条件に応じて上記の環境変数をセットするモジュールを用意
> して組み込むだけで実現できます。
>
>
> 参考までに/tmp/no-gzipファイルが存在するときだけ圧縮処理を
> スキップさせるモジュールは、下記のように簡単に記述することができ
> ます。
>
> ------------------------------------------------
> #include "httpd.h"
> #include "http_config.h"
> #include "http_protocol.h"
> #include "ap_config.h"
>
> static int mysetenvif_handler(request_rec *r)
> {
> apr_finfo_t finfo;
> apr_status_t rv;
>
> rv = apr_stat(&finfo, "/tmp/no-gzip", APR_FINFO_SIZE, r->pool);
> if (rv == APR_SUCCESS)
> apr_table_set(r->subprocess_env, "no-gzip", "yes");
> return OK;
> }
>
> static void mysetenvif_register_hooks(apr_pool_t *p)
> {
> ap_hook_fixups(mysetenvif_handler, NULL, NULL, APR_HOOK_MIDDLE);
> }
>
> /* Dispatch list for API hooks */
> module AP_MODULE_DECLARE_DATA mysetenvif_module = {
> STANDARD20_MODULE_STUFF,
> NULL, /* create per-dir config structures */
> NULL, /* merge per-dir config structures */
> NULL, /* create per-server config structures */
> NULL, /* merge per-server config structures */
> NULL, /* table of config file commands */
> mysetenvif_register_hooks /* register hooks */
> };
> ------------------------------------------------
>
>
> CPUの使用率とかを参照するAPIはOSによってまちまちだっ
> たと思うので、ご利用の環境で何を使えば良いのかを調べてみてくださ
> い。もしくは getloadavg(3) あたりでロードアベレージを元に
> 動作を変えるというのも簡単で良いかもしれません。
>
> SEE ALSO
> http://httpd.apache.org/docs/2.2/en/mod/mod_deflate.html
>
> ___
> Hiroyuki OYAMA <oyama @ module.jp>
> http://module.jp/
>
PHP-users メーリングリストの案内