現在の位置: ホーム> 最新記事一覧> session_register_shutdown()とregister_shutdown_function()の違いと接続

session_register_shutdown()とregister_shutdown_function()の違いと接続

M66 2025-05-25

PHP開発では、プログラムが閉鎖されているときに操作、特にリソースリリースとデータストレージを処理することが非常に重要です。 2つの関数session_register_shutdown()register_shutdown_function()がよく言及されていますが、それらの関数、使用法、および適用可能なシナリオは異なります。この記事では、その違い、接続、アプリケーションを詳細に紹介します。


1。関数の紹介

1。Regist_ShutDown_Function()

これはPHPによって提供される一般的な関数であり、PHPスクリプトの実行後に自動的に呼び出されるコールバック関数の登録に使用されます。複数のコールバックを登録でき、登録の順序により通話の順序が決定されます。

サンプルコード:

 <?php
register_shutdown_function(function() {
    echo "スクリプトが実行されます,クリーンアップ操作を実行します。";
});
?>

PHPスクリプトが実行されると、この登録されたコールバック関数は、通常の終了または致命的なエラーが発生するかどうかに関係なく実行されます。


2。Session_register_shutdown()

これは、セッションモジュールに特別に使用される関数です。 Register_shutdown_function()を内部的および自動的に呼び出します。セッションシャットダウンハンドラー関数を自動的に登録して、PHPがスクリプトの最後にセッションデータを正しく閉じて保存するようにします。

PHP 5.4の後、この関数は破棄としてマークされており、使用を継続することをお勧めしません。

サンプルコード:

 <?php
session_start();
session_register_shutdown();
$_SESSION['name'] = 'チャン・サン';
?>

呼び出された後、セッションモジュールは、スクリプトの最後に自動的に書き込み操作を実行します。


2。2つの違い

側面session_register_shutdown() Register_shutdown_function()
機能的なポジショニングセッションのクローズ関数を自動的に登録するために特別に使用されます一般、スクリプトが閉じられたときに呼び出されるコールバック関数を登録
パラメーター登録は、パラメーターなしで内部的に自動的に完了しますコールバック関数を渡す必要があり、複数のパラメーターを渡すことができます
使用範囲セッションモジュールのみスクリプトの任意のクローズコールバック
互換性PHP 5.4は放棄されており、推奨されません最新のPHPバージョンの一般的なサポート
行動の時間スクリプトが閉じられたら、セッションデータが記述されていることを確認してください。スクリプトが閉じているときにユーザー定義のコールバック関数を呼び出します

3。2つの間の接続

session_register_shutdown()は、実際にはregister_shutdown_function()のカプセル化であり、セッションデータをスクリプトの最後に安全に記述できるようにするために特に使用されます。これらは両方とも、PHP実行フローシャットダウンフェーズ中にトリガーされ、スクリプトシャットダウンフックのメカニズムに属します。

簡単に言えば:

  • session_register_shutdown() = register_shutdown_function() +セッションを閉じるロジック

  • session_register_shutdown()を使用して、開発者がセッション書き込み操作を手動で管理できるようにします


4.シナリオを使用します

1。Regist_ShutDown_Function()

  • ロギング、リソースのクリーニング、データベース接続の閉鎖、およびその他の操作は、スクリプトの最後に必要です。

  • 余分な操作は、例外または致命的なエラーを処理した後に実行されました。

  • スクリプトが閉じているときに実行する必要がある関数をカスタマイズします。

例:

 <?php
register_shutdown_function(function() {
    error_log("スクリプト実行の終了,ログに書き込みます");
});
?>

2。Session_register_shutdown()

  • PHPの古いバージョンの自動登録セッションの書き込みにのみ(5.3以降)。

  • 新しいバージョンを使用することはお勧めしません。 session_write_close()に電話するか、PHPに頼って自動的に書き込むことをお勧めします。


5。概要

関数推奨主な関数使用に関する推奨事項
session_register_shutdown()お勧めしませんセッションの書き込みコールバックを自動的に登録します古いバージョンとの互換性のためにのみ使用され、現代のプロジェクトから廃止されました
Register_shutdown_function()推薦する任意のスクリプトを登録して、コールバック関数を閉じます幅広いアプリケーションの範囲、柔軟で安定しています

最新のPHP開発では、セッションの書き込みを処理するときにSESSION_WRITE_CLOSE()を直接使用することをお勧めします。クロージング中の他のクリーニング作業の場合、コードの互換性と柔軟性を確保するために、 Register_shutdown_function()をお勧めします。


追加メモ:URLドメイン名の交換の例

コードにURLが含まれている場合、たとえば:

 <?php
echo "ウェブサイトにアクセスしてください: http://example.com/path";
?>

置き換える必要があります。