拡張モジュールのライフサイクル
Zend 拡張モジュールは、そのライフサイクルにおいていくつかの段階をたどります。
これらの段階を通じて、開発者はさまざまな初期化や後処理そして情報の取得などを行います。
Zend API には、拡張モジュールの 5 つの段階のそれぞれに対するフックがあります。
これらは PHP の関数からコールされるのとは別のものです。
ロード、アンロードそしてリクエスト
Zend エンジンは、クライアントからのひとつあるいは複数の "リクエスト"
を処理します。昔ながらの CGI の実装では、
このリクエストごとにひとつのプロセスを実行します。
しかし、それ以外の多くの実装 (有名どころでは Apache モジュールなど)
では、複数のリクエストを単一の PHP プロセスに関連付けることができます。
したがって、Zend 拡張モジュールはその生存期間中に多くのリクエストを処理することもありえます。
概要
-
Zend API では、モジュールがメモリにロードされるのは対応する
PHP プロセスが立ち上がる際だけです。
各モジュールは、zend_module
構造体で定義された "モジュール初期化"
関数をロード時に実行します。
-
対応する PHP プロセスがクライアントからのリクエストの処理を開始する
(つまり、PHP インタプリタが動き始める) ときには、
各モジュールは zend_module
構造体で定義された "リクエスト初期化"
関数を実行します。
-
対応する PHP プロセスがリクエストの処理を終了したときには、
各モジュールは zend_module
構造体で定義された "リクエスト後処理"
関数を実行します。
-
対応する PHP プロセスが終了する際に、
モジュールも順にメモリからアンロードされます。そのときには、
各モジュールは zend_module
構造体で定義された "モジュール後処理"
関数を実行します。