[PHP-users 8707] Re: PHP の拡張性?

Youichi Iwakiri php-users@php.gr.jp
Wed, 17 Jul 2002 12:37:55 +0900


いわきりです

Yasuo Ohgaki wrote in <3D34CAAD.7020502@ohgaki.net> :
># 覚えていませんが、dl()されたモジュールはシャットダ
># ウン後にアンロードされたと思います。(この「シャット
># ダウン」と言うのはリクエストシャットダウンの事で、サー
># バーをシャットダウンの事ではありません)

モジュール呼び出しの順序としては、
dl()を使った場合は、
 0.スクリプトの実行
 1.dl()ステップに達した時点で、
  1.1.モジュール初期化(MINIT)
  1.2.リクエスト初期化(RINIT)
 2.スクリプトの終了
   2.1.リクエスト解放(RSHUTDOWN)
   2.2.モジュール解放(MSHUTDOWN)
という流れだったと思います。

# MINIT : Module INITialize
  MSHUTDOWN : Module SHUTDOWN
  RINIT : Request INITialize
  RSHUTDOWN : Request SHUTDOWN

>モジュールを追加するオーバーヘッドは大まかに言うと
 0) apache起動
>1) コードセグメントメモリ消費量の増加(普通無視できる)
>2) データセグメントメモリ消費量の増加(普通無視できる)
>3) モジュール初期化(普通無視できる)
<リクエストループ>
	>4) リクエスト初期化(オーバーヘッドが大きいモジュールは無視できない)
	 5) スクリプト実行
	>6) リクエスト解放(普通はfree()等のコードのみで無視できる)
</リクエストループ>
 7) モジュール解放(普通無視できる)
 8) apache終了

>dl()を使うと
 0) apache起動
>1) コードセグメントメモリ消費量の増加(staticリンク, extension=foo.soよりは少ない)
>2) データセグメントメモリ消費量の増加(staticリンク, extension=foo.soよりは少ない)
>3) モジュール初期化(普通無視できる)
<リクエストループ>
	 4) スクリプト実行
	   5) モジュールロード(無視できない。かなり大きいオーバーヘッド)
	    6) モジュール初期化(毎回実行、初期化コードのサイズはモジュールによってまちまち)
	    7) リクエスト初期化(オーバーヘッドが大きいモジュールは無視できない)
            8) スクリプト継続実行
         9) スクリプト終了
	10) リクエスト解放(普通はfree()等のコードのみで無視できる)
        11) モジュール解放(普通はfree()等のコードのみで無視できる)
</リクエストループ>
 8) apache終了

たしかこんなです。4) - 11)にかかる時間が気にならなければ
dl()の使用もよろしいかと思います。

# マルチスレッドサーバは使ってないのでコメントは控えます。

-- 
Youichi Iwakiri