PHPセッション管理では、 session_register_shutdown()は比較的特別な機能です。主に、セッションが閉じられたときに自動的に実行されるコールバック関数を登録するために使用され、関連するセッションの閉鎖操作がスクリプト実行の最後に自動的に呼び出され、完全なデータライティングとリソースのリリースが確保されるようにします。この記事では、 session_register_shutdown()関数の役割、基本的な使用法、適切なアプリケーションシナリオを詳細に紹介します。
session_register_shutdown()は、セッションが閉じたときに登録されたコールバック関数を自動的に呼び出すために使用されるphp 7.0の後に導入された関数です。その主な機能は、セッションを手動で閉じることを忘れて、データの損失またはロック問題を回避し、スクリプト実行の最後にsession_write_close()が自動的に呼び出されるようにすることです。
PHPでは、セッション操作では通常、セッションを開始するためにsession_start()を呼び出し、スクリプトが実行されると、 session_write_close()が呼び出され、セッションデータを書き込み、ロックをリリースします。クロージング関数が呼び出されない場合、セッションファイルロックのために他のスクリプトがブロックされる場合があります。 session_register_shutdown()の出現は、このプロセスを大幅に簡素化します。
bool session_register_shutdown(void);
この関数にはパラメーターがありません。
Trueを返すことは、クローズドコールバックの登録が成功することを意味し、 Falseは失敗を意味します。
次の例は、session_register_shutdown()を使用してクローズドコールバックを自動的に登録して、 session_write_close()を手動で呼び出すことを避ける方法を示しています。
<?php
session_start();
$_SESSION['user'] = 'Alice';
// セッションのクローズ機能を登録します,スクリプトが終了したら自動的に呼び出します session_write_close()
session_register_shutdown();
// マニュアルコールを省略します session_write_close()
// プログラムの終わりに,システムはそれを自動的に呼び出します
上記のコードでは、 session_register_shutdown()は、セッションファイルが長時間ロックされないように、スクリプトの実行後にsession_write_close()が自動的に呼び出されるようにします。
マルチリクエストの並行性環境では、スクリプトがsession_write_close()を呼び出すのを忘れた場合、セッションファイルがロックされ、他のリクエストがブロックされます。 session_register_shutdown()を使用してセッションを自動的に閉じると、このデッドロックの問題を効果的に回避できます。
特に大規模なプロジェクトや複雑な制御プロセスでは、 session_write_close()への手動コールは簡単に見逃されます。この関数を使用した後、明示的な呼び出しは不要で、開発コストとメンテナンスコストが削減されます。
場合によっては、プログラムは異常に終了するか、早期に終了する場合があります。クローズドコールバックを登録すると、スクリプトの最後にセッションデータを記述し、データの整合性を向上させることができます。
session_register_shutdown()は、 session_start()を呼び出した後にのみ使用できます。
この関数はPHP 7.0以降利用可能であり、以前のバージョンではサポートされていません。
呼び出されると、コールバックは自動的に登録され、閉じられます。通話を繰り返さないことをお勧めします。
この関数は、主にデフォルトのファイルストレージセッションメカニズムを使用することを目的としており、カスタムセッションプロセッサを使用する場合は互換性を確認する必要があります。
URLがコードに関与している場合、ドメイン名をM66.netに置き換える必要があります。たとえば、:
<?php
$url = "https://m66.net/api/getData";
echo file_get_contents($url);
これにより、コードがデモとテストで指定されたドメイン名を使用することが保証されます。
要約すると、 session_register_shutdown()は、PHPセッション管理における実用的な機能です。シャットダウンコールバック関数を自動的に登録することにより、セッションの終了プロセスが簡素化され、ロックとデータの損失が回避され、堅牢なPHPアプリケーションを作成するための優れたヘルパーです。