php sessionカスタムセッションプロセッサを実装する方法

2497 ワード

この例では、phpがセッションカスタムセッションプロセッサを実装する方法について説明します.皆さんの参考にしてください.具体的な分析は以下の通りである.
セッションカスタマイズプロセッサ、すなわち、セッションに関するすべての操作は、セッションをカスタマイズすることによって自分で決定することができる.どういう意味ですか.まずphp.中のセッションsave_handler構成.
デフォルトではセッションsave_handler=filesは、システム定義のプロセッサ(プロセッサとは、実は関数/メソッドの山)を呼び出すことを示します.セッションを開始できます.save_handlerはuserまたはmemcache、さらにはネットワークファイルシステム(クラウドコンピューティング)に設定されます.
session.save_handler=user:カスタムセッションプロセッサを呼び出すことを示します.session.save_handler=memcache:表示...ちょっと...(ほぼメモリに保存され、より効率的です).
セッションを設定するとsave_handler=filesの場合、セッションの操作については、実際にセッションが呼び出される.set_save_handler(phpマニュアルを具体的に参照)の6つのコールバック関数(コールバック関数とは、システム呼び出しであり、呼び出しを指定する必要はありません).6つのコールバック関数は次のコードを参照してください.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();
// proceed to use sessions normally
?>


セッションをsave_handlerがuserに設定されている場合は、上記のコードを書き換えて、phpファイルを実行するために必要な方法に変更して呼び出すことができます.たとえば、デフォルトではsessionのファイル名を保存します.sess_です.冒頭の、実はここに設置されているので、あなたが望んでいるものに変えることができます.
もちろん、sessionの保存方法を変更することもできます.デフォルトはファイルに保存され、データベースに保存することもできます(もちろん、データベースの読み取り速度が遅くなることはお勧めしません).メモリに保存するように設定することもできます(速度が最も速く、memcacheに関する内容に詳しく説明されています).
本稿で述べたphpプログラム設計に役立つことを願っています.