ホームページ >バックエンド開発 >PHPチュートリアル >セッションカスタムセッションプロセッサを実装するための PHP メソッド、セッション session_PHP チュートリアル
セッションカスタムセッションプロセッサ、セッションセッションを実装するための
この記事の例では、PHP でカスタム セッション プロセッサを実装する方法を説明します。皆さんの参考に共有してください。具体的な分析は次のとおりです:
セッション カスタム セッション プロセッサー、つまり、セッション上のさまざまな操作はすべて、セッションをカスタマイズすることで決定できます。それはどういう意味ですか?まず、php.ini の session.save_handler 設定を見てみましょう。
デフォルトでは、session.save_handler = files。これは、システム定義のプロセッサが呼び出されることを意味します(いわゆるプロセッサは、実際には多くの関数/メソッドです)。 session.save_handler を user または memcache、あるいはネットワーク ファイル システム (クラウド コンピューティング) に設定することもできます。
session.save_handler = user: カスタム セッション ハンドラーの呼び出しを示します。 session.save_handler = memcache: わずかに.... を示します (大まかにメモリに保存され、より効率的です)。
session.save_handler = files を設定すると、セッションの操作に関して、実際には session.set_save_handler の 6 つのコールバック関数 (詳細は PHP マニュアルを参照) が呼び出されます (いわゆるコールバック関数はシステムによって呼び出されるので、呼び出す必要はありません)。指定された)。 6 つのコールバック関数については、以下のコードを参照してください。これらは PHP マニュアルでも参照できます。
関数close()
{
return(true);
}
関数読み取り($id)
{
グローバル $sess_save_path;
$sess_file = "$sess_save_path/sess_$id";
return (文字列) @file_get_contents($sess_file);
}
関数書き込み($id, $sess_data)
{
グローバル $sess_save_path;
$sess_file = "$sess_save_path/sess_$id";
if ($fp = @fopen($sess_file, "w")) {
$return = fwrite($fp, $sess_data);
fclose($fp);
$return;
を返します
} その他 {
Return(false);
}
}
関数破棄($id)
{
グローバル $sess_save_path;
$sess_file = "$sess_save_path/sess_$id";
return(@unlink($sess_file));
}
関数 gc($maxlifetime)
{
グローバル $sess_save_path;
foreach (glob("$sess_save_path/sess_*") as $filename) {
If (filemtime($filename) + $maxlifetime < time()) {
@unlink($filename);
}
}
true を返します;
}
session_set_save_handler("open", "close", "read", "write", "destroy", "gc");
session_start();
// 通常通りセッションの使用に進みます
?>
もちろん、セッションの保存方法を変更することもできます。デフォルトでは、セッションをデータベースに保存できます。もちろん、これを行うことはお勧めできません。データベースの読み取り速度が遅くなります。 )、またはメモリに保存するように設定することもできます(速度 memcache関連コンテンツで最速かつ詳細に説明しています)。
この記事で説明した内容が皆様の PHP プログラミング設計に役立つことを願っています。