ホームページ >バックエンド開発 >PHPチュートリアル >PHPでセッションストレージメカニズムを書き換える方法

PHPでセッションストレージメカニズムを書き換える方法

不言
不言オリジナル
2018-07-10 18:00:463289ブラウズ

PHPでセッションストレージメカニズムを書き換える方法

#この記事では主に、PHP でセッション ストレージの仕組みを書き換える方法を紹介します。参考になるものがありました。共有します。困っている友人は参考にしてください。

セッション データ領域

デフォルトでは、ファイルの形式でサーバー オペレーティング システムの一時ディレクトリに保存されます。

セッションデータ領域が多すぎる場合、ファイル形式で保存すると動作が遅くなります。ディスクの読み取りと書き込み (IO、入出力) のオーバーヘッドが非常に高くなります。

実際のプロジェクトでは、セッション データをより高速に保存するために他の方法が使用されます。典型的な方法: データベース、メモリ。

データベース ストレージを例として説明します。セッション データはデータベースに保存されます。

セッション データ領域に直接関連する操作を書き直すだけです。

基本的な操作は読み取りと書き込みの 2 つだけです。

1: 読み取りと書き込みを完了できる 2 つの関数を定義します。

2: 読み取りと書き込みが必要な場合は、ユーザー定義の読み取りおよび書き込み関数を使用して完了することをセッション メカニズムに通知します。

関連トピックの推奨事項:phpセッション (写真、ビデオ、ケースを含む)

定義 2 (実際には合計6 つの必須関連関数) 読み取りと書き込みを完了できる関数

Informsession メカニズム、 が読み取りと書き込みを行う必要がある場合、ユーザー定義の読み取りおよび書き込み関数を使用して、

Session_set_save_handler(
开始函数,结束函数,读函数,写函数,删除函数,GC函数
);
## を完了します。 #ユーザー定義関数をセッションストレージ関連関数として設定するために使用されます。

上記の構文は単なる設定通知であり、上記の 6 つの関数の呼び出しではありません。これらの 6 つの関数は、セッション メカニズムが特定の時点まで実行される場合にのみ使用されます。時間の転送!たとえば、セッションを開くときは、sessRead() を呼び出すだけで済みます。

通常はセッションを使用します

セッション メカニズムを開きます

操作

$_SESSION

セッションテーブルの作成

このセッションでは、各レコードがセッションデータ領域となり、元のセッションファイルに相当します。

テーブル構造:

読み取り操作:

sessRead()

呼び出し者、情報を伝えてくれた人! PHP のセッション メカニズムがこの関数を呼び出すと、現在のセッション ID がパラメータとして関数に渡されます:

したがって、渡されたセッションを受け入れるには、仮パラメータを指定する必要があります。 ID.パラメータ:

読み取りセッション データ文字列を返す必要があります。これは sess_content フィールドの内容です。読み取られない場合は、セッション データがないことを示す空の文字列を返します。

書き込み操作:

sessWrite()

PHPsession メカニズムが書き込みを実行するためにこの関数を呼び出すときオペレーションでは、現在のセッション ID と書き込まれる (シリアル化される) コンテンツが関数に渡されます。 受信には 2 つの仮パラメータが必要です:

テスト:

削除操作:

sessDelete()

セッションを破棄するとき。 PHP 関数を実行しました:

Session_destroy();

セッションを破棄し、対応するセッション データ領域を削除して、セッションを閉じることができます。メカニズムも同時に!

セッション データ領域を削除する必要があるため、削除のためのメソッドを追加する必要があります:

PHP のセッション メカニズムは現在のセッションを渡します。 sessDelete -ID をパラメータとして呼び出すとき:

受け取るための仮パラメータを定義する必要があります:

#ガベージ コレクション操作: sessGC()

ガベージ: サーバー上の古いセッション データ領域。 ,ゴミの見分け方は?

セッションデータ領域が一定期間(最後の書き込み操作)以上使用されていない場合、それはガベージデータとみなされます。

時間の重要な点: デフォルトは 1440 秒です。設定可能:

最終書き込み時刻に基づいて、ゴミかどうかを判断できます。

最終書き込み時刻を記録するフィールドを追加する必要があります。

書き込み時に、このフィールドを更新します:

sessWrite();

判定条件:期限切れ

Last_write <現在時刻-1440

削除方法は?

session_start() プロセス中、セッション メカニズムを開くプロセス中に、ガベージ コレクション操作が実行される可能性があります。実行すると、期限切れのガベージデータ領域はすべて削除されます。

デフォルトの確率は 1/1000 です。

確率を設定できます:

Possibility:

Base (divisor):

調整確率テスト:

スクリプト サイクル中に調整し、関数 ini_set() を使用し、セッション メカニズムを開く前に完了することをお勧めします:

実装 sessGC()

PHP のセッション メカニズムは、パラメータとして最大有効期間を渡します。

#操作を開始しますsessBegin():

初期化作業

# は最初に実行されることが保証されます。 sessBegin の初期コードを完成させます:

たとえば、データベース接続を初期化します:

操作の終了 sessEnd():

最終作業

Return true;

構文の詳細

セッション メカニズムを開く前に最初に設定します

Session_set_save_handler() は session_start より前にあります()と呼ばれます。

セッションを自動的に開かないでください。 php.ini: session.auto_start = 0

PHP設定項目: session.save_handler

PHP ストレージによって使用されますメカニズム:

#最後に、上記の設定を user: に変更することをお勧めします。これは、ユーザー定義を意味します。

上記がこの記事の全内容です。皆様の学習に少しでもお役に立てれば幸いです。その他の関連コンテンツについては、PHP 中国語 Web サイトをご覧ください。

関連する推奨事項:

PHP を介してフォルダーをトラバースして画像のディレクトリ名とファイル名を取得する方法

方法foreach ループ後に残った php 配列参照の問題を解決します。

以上がPHPでセッションストレージメカニズムを書き換える方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。