phpのセッションを・・・

phpではセッションの扱いは非常に簡単。

 <?php
 session_start();
 ?>

でセッションを確保。

 <?php
 $_SESSION['test1'] = 1 ;
 $_SESSION['test2'] =2;
 ?>

な感じで、その後、すーーっと保持されっぱなしになるので、

 <?php
 $_SESSION = array() ;
 session_destroy();
?>

で、ちゃんと開放しないといけない。

$_SESSION = array() ;しないと、

phi.iniのsession.save_pathで設定したディレクトリィにセッションの情報が残ってしまう。
自宅鯖なら、これで十分。
でも、ロードバランサーなんか使っても、PHPのセッションはそのままにしておくと、
同じセッションをいつも同じ鯖で動かすしかなくなる。
仮に人気のあるセッションと人気の全くないセッションがあれば、負荷が100:0になってもおかしくない。
※人気のあるセッションとは、だらだらと何時までも淡々と使い続けるユーザーのセッション。
何台サーバーを入れたって落ちるので、がんばるよりセッション情報をDBに入れた方がマシだ。
詳しくは
日本語のPHPのページ

PHP:セッション情報をDBに持つ
を 参照してください。
php.iniに

[Session] session.save_handler = user と書いて、 各PHPページには require "session.php"; とだけ書いて、 
session.phpには

<?php
function f_read($id) // idはセッションID
{  
// ここにDBからセッション情報を読み込むSQLを実行する。
return セッション情報;
}
function f_write($id, $data) // idはセッションID、dataはセッション情報
{
// ここでセッション情報を書き込むSQLを実行する。
return true;
}
function f_clean($maxlifetime)
{
// GCが発生した時のSQLを書く。
return true;
}
<中略 f_open などは return true でOK。>
session_set_save_handler('f_open','f_close','f_read','f_write','f_destroy','f_clean');
session_start();
?>
と書いておくといいらしい。
 


    



コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA