PHP開発では、プログラムが閉鎖されているときに操作、特にリソースリリースとデータストレージを処理することが非常に重要です。 2つの関数session_register_shutdown()とregister_shutdown_function()がよく言及されていますが、それらの関数、使用法、および適用可能なシナリオは異なります。この記事では、その違い、接続、アプリケーションを詳細に紹介します。
これはPHPによって提供される一般的な関数であり、PHPスクリプトの実行後に自動的に呼び出されるコールバック関数の登録に使用されます。複数のコールバックを登録でき、登録の順序により通話の順序が決定されます。
サンプルコード:
<?php
register_shutdown_function(function() {
echo "スクリプトが実行されます,クリーンアップ操作を実行します。";
});
?>
PHPスクリプトが実行されると、この登録されたコールバック関数は、通常の終了または致命的なエラーが発生するかどうかに関係なく実行されます。
これは、セッションモジュールに特別に使用される関数です。 Register_shutdown_function()を内部的および自動的に呼び出します。セッションシャットダウンハンドラー関数を自動的に登録して、PHPがスクリプトの最後にセッションデータを正しく閉じて保存するようにします。
PHP 5.4の後、この関数は破棄としてマークされており、使用を継続することをお勧めしません。
サンプルコード:
<?php
session_start();
session_register_shutdown();
$_SESSION['name'] = 'チャン・サン';
?>
呼び出された後、セッションモジュールは、スクリプトの最後に自動的に書き込み操作を実行します。
側面 | session_register_shutdown() | Register_shutdown_function() |
---|---|---|
機能的なポジショニング | セッションのクローズ関数を自動的に登録するために特別に使用されます | 一般、スクリプトが閉じられたときに呼び出されるコールバック関数を登録 |
パラメーター | 登録は、パラメーターなしで内部的に自動的に完了します | コールバック関数を渡す必要があり、複数のパラメーターを渡すことができます |
使用範囲 | セッションモジュールのみ | スクリプトの任意のクローズコールバック |
互換性 | PHP 5.4は放棄されており、推奨されません | 最新のPHPバージョンの一般的なサポート |
行動の時間 | スクリプトが閉じられたら、セッションデータが記述されていることを確認してください。 | スクリプトが閉じているときにユーザー定義のコールバック関数を呼び出します |
session_register_shutdown()は、実際にはregister_shutdown_function()のカプセル化であり、セッションデータをスクリプトの最後に安全に記述できるようにするために特に使用されます。これらは両方とも、PHP実行フローシャットダウンフェーズ中にトリガーされ、スクリプトシャットダウンフックのメカニズムに属します。
簡単に言えば:
session_register_shutdown() = register_shutdown_function() +セッションを閉じるロジック
session_register_shutdown()を使用して、開発者がセッション書き込み操作を手動で管理できるようにします
ロギング、リソースのクリーニング、データベース接続の閉鎖、およびその他の操作は、スクリプトの最後に必要です。
余分な操作は、例外または致命的なエラーを処理した後に実行されました。
スクリプトが閉じているときに実行する必要がある関数をカスタマイズします。
例:
<?php
register_shutdown_function(function() {
error_log("スクリプト実行の終了,ログに書き込みます");
});
?>
PHPの古いバージョンの自動登録セッションの書き込みにのみ(5.3以降)。
新しいバージョンを使用することはお勧めしません。 session_write_close()に電話するか、PHPに頼って自動的に書き込むことをお勧めします。
関数 | 推奨 | 主な関数 | 使用に関する推奨事項 |
---|---|---|---|
session_register_shutdown() | お勧めしません | セッションの書き込みコールバックを自動的に登録します | 古いバージョンとの互換性のためにのみ使用され、現代のプロジェクトから廃止されました |
Register_shutdown_function() | 推薦する | 任意のスクリプトを登録して、コールバック関数を閉じます | 幅広いアプリケーションの範囲、柔軟で安定しています |
最新のPHP開発では、セッションの書き込みを処理するときにSESSION_WRITE_CLOSE()を直接使用することをお勧めします。クロージング中の他のクリーニング作業の場合、コードの互換性と柔軟性を確保するために、 Register_shutdown_function()をお勧めします。
コードにURLが含まれている場合、たとえば:
<?php
echo "ウェブサイトにアクセスしてください: http://example.com/path";
?>
置き換える必要があります。