WEB開発を行っていると、時々、WEBサーバーが複数台構成で、ロードバランスしたりする場合などがあり、
セッション情報をDBに持つ場面があったりします。
この際、セッションをDBに持たせることにより解決しますが、その設定方法を記載します。
・前提
Linux + PHP + MySQLでの開発
・方法
1.php.iniのsession.save_handlerにuserを設定。(ini_set関数でも可)
2.session_set_save_handler関数にてユーザー定義のセッション保存関数を設定。
session_set_save_handler('open','close','read','write','destroy','clean');
via.http://jp.php.net/manual/ja/function.session-set-save-handler.php
3.セッション保存用のテーブルを用意(※下記は必要に応じて変更してください。)
CREATE TABLE sessions
(
id INTEGER NOT NULL AUTO_INCREMENT,
session_id TEXT NOT NULL ,
value TEXT,
update DATETIME ,
PRIMARY KEY (id) ,
UNIQUE Index_1(session_id )
)
4.上記2で定義した下記の関数を設定します。
open
close
read
write
destroy
clean
ex).セッション参照
function read($session_id)
{
$conn = mysql_connect('hostname_or_ip' , 'user', 'password');
$session_id = mysql_real_escape_string($session_id);
$query = "SELECT value FROM sessions WHERE session_id = '".$session_id."'";
$rows = mysql_query($query , $conn );
mysql_close($rows );
while ($row = mysql_fetch_array( $rows ))
{
$value = $row['data'];
}
return $value ;
}
セッション情報をDBに持つ場面があったりします。
この際、セッションをDBに持たせることにより解決しますが、その設定方法を記載します。
・前提
Linux + PHP + MySQLでの開発
・方法
1.php.iniのsession.save_handlerにuserを設定。(ini_set関数でも可)
2.session_set_save_handler関数にてユーザー定義のセッション保存関数を設定。
session_set_save_handler('open','close','read','write','destroy','clean');
via.http://jp.php.net/manual/ja/function.session-set-save-handler.php
3.セッション保存用のテーブルを用意(※下記は必要に応じて変更してください。)
CREATE TABLE sessions
(
id INTEGER NOT NULL AUTO_INCREMENT,
session_id TEXT NOT NULL ,
value TEXT,
update DATETIME ,
PRIMARY KEY (id) ,
UNIQUE Index_1(session_id )
)
4.上記2で定義した下記の関数を設定します。
open
close
read
write
destroy
clean
ex).セッション参照
function read($session_id)
{
$conn = mysql_connect('hostname_or_ip' , 'user', 'password');
$session_id = mysql_real_escape_string($session_id);
$query = "SELECT value FROM sessions WHERE session_id = '".$session_id."'";
$rows = mysql_query($query , $conn );
mysql_close($rows );
while ($row = mysql_fetch_array( $rows ))
{
$value = $row['data'];
}
return $value ;
}
コメント