PHP の最も一般的な 2 つの動作モードは、WEB モードと CLI モードです。
どのモードでも、PHP は同じように動作し、SAPI として実行されます。
1. ターミナルに php コマンドを入力すると、CLI が使用されます。
リクエストを完了するために PHP をサポートする Web サーバーのようなものです。リクエストが完了すると、制御がターミナルに戻ります。
2. Apache をホストとして使用している場合、リクエストが来たとき、PHP はリクエストの完了をサポートします。
次のマクロは main/php.h で定義されています
#define PHP_MINIT_FUNCTION ZEND_MODULE_STARTUP_D
#define PHP_MSHUTDOWN_FUNCTION ZEND_MODULE_SHUTDOWN_D
#define PHP_RINIT_FUNCTION ZEND_MODULE_ACTIVATE_D
#define PHP _ RSHUTDOWN_FUNCTION ZEND_MODULE_DEACTIVATE_D
#define PHP_MINFO_FUNCTION ZEND_MODULE_INFO_D
#define PHP_GINIT_FUNCTION ZEND_GINIT_FUNCTION
#define PHP_GSHUTDOWN_FUNCTION ZEND_GSHUTDOWN_FUNCTION
対応する関数は次のとおりです
モジュールが初期化されるときに PHP_MINIT_FUNCTION が実行されます
モジュールがアンインストールされるときに PHP_MSHUTDOWN_FUNCTION が実行されます
PHP_RINIT_FUNCTION が実行されると実行されます。 REQUESTリクエストが初期化される
REQUESTリクエスト終了時にPHP_RSHUTDOWN_FUNCTIONが実行される
PHP_MINFO_FUNCTION phpinfoにこのモジュールの情報を設定するためです
グローバル変数初期化時にPHP_GINIT_FUNCTION
グローバル変数解放時にPHP_GSHUTDOWN_FUNCTION
見るカスタム拡張ケースフラグメント:
int minit_time;
PHP_MINIT_FUNCTION(test)
{
minit_time = time(NULL);
return SUCCESS;
}
PHP_MSHUTDOWN_FUNCTION(test) )
{
FILE *fp=fopen("mshutdown.txt","a+");
fprintf(fp,"%ldn",time(NULL));// どうか見てみましょうリクエストが終了するたびに発生します このファイルにデータを追加します
fclose(fp);
return SUCCESS;
}
int rinit_time;
PHP_RINIT_FUNCTION(test)
{
rinit_time = time(NULL) ;
return SUCCESS;
}
PHP_RSHUTDOWN_FUNCTION(test)
{
FILE *fp=fopen("rshutdown.txt","a+");
fprintf(fp," %ldn",time(NULL));//リクエストが終了するたびにデータがこのファイルに追加されるかどうかを確認してみましょう
fclose(fp);
return SUCCESS;
}
PHP_MINFO_FUNCTION(test)
{
php_info_print_table_start();//php_write を呼び出して HTML タグを出力します
php_info_print_table_header(2, "module info", "enabled"); http://www.cxybl.com /html/wlbc/Php/20121221/35071.html