SAPI
Zend VM
内部拡張機能
さまざまなSAPIまたはPHP自体のライフサイクルに関しては、後で詳しく説明するApacheなどの他のコンポーネントと結合される場合があります。 PHP 拡張機能のライフサイクルについては、次の図を参照してください。このプロセスについてはネット上にたくさんの情報があるので、詳細は説明しません。拡張機能を開発するときに注意する必要があるいくつかの点も、図内の特定のノードに対応する可能性があります:
グローバル変数の定義 (通常は zend_modulename_globals )
resource/classes/constants/ などのモジュールレベルの初期化を含む、モジュールの初期化ini 構成
リクエストの初期化 (単一のリクエストに関連する一部の初期化を含む)
リクエストの終了、単一のリクエストに関連するデータ/メモリをクリーンアップする
モジュールのアンインストール、モジュールに関連するデータ/メモリをクリーンアップする
基本的に私たちがしなければならないことは、上記のプロセスに従い、関連する組み込み関数を実装し、独自のリソース/グローバル変数/クラス/関数などを定義することです。 Python などの他の言語を埋め込んだり、Apache などの他のコンポーネントに埋め込んだりする場合は、マルチプロセスとマルチスレッドに関連する問題に注意してください。
php-src/ext/ext_skel を使用して PHP 拡張フレームワークを生成します
./ext_skel --extname=myext[tan@tan ~/software/needbak/php-5.5.20/ext 12:24]$==> ls myext/config.m4 config.w32 CREDITS EXPERIMENTAL myext.c myext.php php_myext.h tests
より重要なファイルは config.m4 (そしてもちろんソース コード) です。config.m4 ファイルは次のコマンドを使用して生成できます。 phpize コマンドを使用してconfigureファイルを設定します。このファイルは、モジュールと外部依存ライブラリを有効にするかどうかを説明します。
れーれー れーれー