session_set_save_handlerとは? わかりやすく解説

Weblio 辞書 > コンピュータ > PHP関数リファレンス > session_set_save_handlerの意味・解説 

session_set_save_handler

(PHP 4, PHP 5)
session_set_save_handler — ユーザ定義のセッション保存関数を設定する

説明

bool session_set_save_handler ( callback open, callback close, callback read, callback write, callback destroy, callback gc )
session_set_save_handler() は、セッションに 関連するデータを保存および取得するために使用されるユーザ定義の セッション保存関数を設定します。この関数は、セッションデータを ローカルデータベースに保存する場合のように PHP セッションにより 提供されるもの以外の保存方法を使用したい場合に有用です。 成功した場合に TRUE を、失敗した場合に FALSE を返します。
注意: セッションが何も情報を含んでいない場合には write ハンドラは実行されません。 空のセッション変数が登録されている場合でも同様です。 この動作はデフォルトのファイルベースセッションハンドラとは異なるものです。 デフォルトのファイルベースセッションハンドラは空のセッションファイルを 生成します。
以下の例では、デフォルトの保存 files に似た ファイルベースのセッション保存を行います。この例は、PHP がサポート する任意のデータベースエンジンを用いてデータベースへの保存を行う ように容易に拡張可能です。
save ハンドラが期待通りに動作するように read 関数は常に文字列を返す 必要があります。データがない場合には、空の文字列を返してください。 他のハンドラからの返り値は、論理式、すなわち成功した場合に TRUE、 失敗した場合に FALSE を返します。

警告
PHP 5.0.5 以降、Write ハンドラおよび Close ハンドラはオブジェクトが 破棄されたあとにコールされます。そのため、セッション内でデストラクタを 使用可能ですが、ハンドラ内ではオブジェクトを使用できません。 以前のバージョンでは、これらのコールされる順序が逆でした。 この「ニワトリが先かタマゴが先か」の問題を解決するために、 デストラクタから session_write_close() を コールすることが可能です。

例 2086. session_set_save_handler() の例
<?php
function open($save_path, $session_name)
{
  global $sess_save_path;

  $sess_save_path = $save_path;
  return(true);
}

function close()
{
  return(true);
}

function read($id)
{
  global $sess_save_path;

  $sess_file = "$sess_save_path/sess_$id";
  return (string) @file_get_contents($sess_file);
}

function write($id, $sess_data)
{
  global $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;
  } else {
   return(false);
  }

}

function destroy($id)
{
  global $sess_save_path;

  $sess_file = "$sess_save_path/sess_$id";
  return(@unlink($sess_file));
}

function gc($maxlifetime)
{
  global $sess_save_path;
 
  foreach (glob("$sess_save_path/sess_*") as $filename) {
   if (filemtime($filename) + $maxlifetime < time()) {
     @unlink($filename);
   }
  }
  return true;
}

session_set_save_handler("open", "close", "read", "write", "destroy", "gc");

session_start();

// セッションを通常通り使用します。

?>


session.save_handler 設定ディレクティブも参照してください。


このページでは「PHP関数リファレンス」からsession_set_save_handlerを検索した結果を表示しています。
Weblioに収録されているすべての辞書からsession_set_save_handlerを検索する場合は、下記のリンクをクリックしてください。
 全ての辞書からsession_set_save_handler を検索

英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「session_set_save_handler」の関連用語

session_set_save_handlerのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



session_set_save_handlerのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
PHP Documentation GroupPHP Documentation Group
Copyright © 1997 - 2025 by the PHP Documentation Group.

©2025 GRAS Group, Inc.RSS