PHPカスタムセッションの情報処理手順

伊谢尔伦
リリース: 2023-03-07 17:06:02
オリジナル
2059 人が閲覧しました

Session テクノロジーを使用してシステム内のユーザーを追跡する場合、Session のデフォルトの処理方法は、Web サーバー内のファイルに各ユーザーのセッション情報を記録し、php の session.save_path を通じてセッション データ ファイルのパスを作成することです。 .ini。このデフォルトの処理方法は便利ですが、欠点もあります。システムの実行効率に重大な影響を与えます。主な理由は、アクセス量が比較的多いシステムでは通常、複数のサーバーが同時処理に使用されるため、独自のセッション メカニズムを複数のマシンにまたがって使用することができないためです。各サーバーがセッションを個別に処理すると、ユーザーを追跡するという目的を達成できなくなります。このとき、セッションの処理方法を変更する必要があります。共有テクノロジを使用してセッション情報を他のサーバーに保存するか、データベースを使用してセッション情報を保存できます。

セッション情報を共有するためにデータベースを使用する場合でも、共有テクノロジーを使用する場合でも、原則は基本的に同じです。PHP の session_set_save_handler() 関数を使用して、デフォルトの処理方法を変更し、コールバック関数を指定して処理をカスタマイズします。関数は次のとおりです:

session_set_save_handler(open, close, read, write, destroy, gc)
ログイン後にコピー

この関数は、Session ライフサイクルの 6 つのプロセスを表す合計 6 つのコールバック関数を必須パラメータとして必要とします。各関数をカスタマイズすることで、

Session ライフサイクル内の各関数を設定できます。 . 各リンクにおける情報処理。

コールバック関数 説明 session_start()の実行時に
open が実行されます。この税金では、2 つのパラメータを宣言する必要があります。システムは、php.ini の session.save_path オプション値を関数の最初のパラメータに、セッション名を 2 番目のパラメータに自動的に渡します。実行を継続するには true を返します。
close この関数はパラメータを必要とせず、スクリプトの実行が完了するか、session_write_close() または session_destroy() が呼び出されたときに実行されます。つまり、すべてのセッション操作が完了した後に実行されます。処理が必要ない場合は、直接 true を返します。
read は、session_start() の実行時に実行されます。これは、セッションが開かれるときに、現在のセッション データが読み取られ、$_SESSION 変数に書き込まれるためです。パラメータを宣言する必要があり、システムはセッション ID をこの関数に自動的に渡します。この関数は、セッション ID を通じて対応するユーザー データを取得し、現在のユーザーのセッション情報を返し、$_SESSION に書き込みます。変数
write この関数はスクリプトの最後で終了し、$_SESSION 変数に値を代入するときに実行されます。 2 つのパラメータ、つまりセッション ID とシリアル化されたセッション情報文字列を宣言する必要があります。 $_SESSION 変数に値を割り当てるとき、セッション ID を通じて保存場所を見つけて、情報を書き込むことができます。保存が成功したら true を返し、
destroy の実行を続行します。 session_destroy() を実行する場合、パラメーターを宣言する必要があります。システムは自動的にセッション ID を関数に渡し、対応するセッション情報を削除します。
gc は、ガベージコレクションプログラムの起動時に実行されます。パラメータを宣言する必要があります。システムは php.ini の session.gc_maxlifetime オプション値をこの関数に渡し、この時間を超えたセッション情報を削除します。実行を継続するには true を返します。

説明: session_start() を実行すると、open (セッションの開始)、read (現在のセッション データを読み取り、$_SESSION に書き込む)、および gc (ガベージのクリーンアップ) 操作がそれぞれ実行されます。 script _SESSION に対する操作はいずれも、これらのコールバック関数を呼び出しません。 session_destroy() 関数を呼び出す場合、destroy を実行して現在のセッションを破棄します (通常は、対応するレコードまたはファイルを削除します)。このとき、このコールバック関数は、

$_SESSION 変数が出力されている場合にのみセッション データを破棄します。値は存在しますが、この値は閉じた後に書き戻されません。 session_wrte_close() 関数を呼び出すときに write と close を実行し、$_SESSION をストレージに保存します。手動で使用しない場合は、スクリプトの最後に自動的に実行されます。

以上がPHPカスタムセッションの情報処理手順の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!