嘿傢伙存儲會話,我設置了一個負載平衡器EC2集羣。我有單獨的數據庫服務器上運行的MySQL。我有3個Web服務器正在運行,主要是爲了獲得高可用性,當然它的循環負載均衡似乎是這樣,所以每個頁面都會有一個不同的服務器,這會讓您的會話失去。PHP - 在一個數據庫
我想安裝PHP將其存儲在數據庫中。我已經安裝了一個表格,並設置了所有功能(打開,關閉等)。我已經設置:
session_set_save_handler('_open',
'_close',
'_read',
'_write',
'_destroy',
'_clean');
但是,當我登錄或任何網站上我檢查表,什麼也沒有寫。我不確定如果我需要更改php.ini文件中的某些內容。如果是的話,改變的價值是什麼?
謝謝!
編輯:功能:
function _open(){
global $con;
connect();
}
function _close(){
global $con;
//mysql_close();
}
function _read($id){
global $con;
$id = mysql_real_escape_string($id);
$sql = "SELECT data FROM sessions WHERE id = '$id'";
if ($result = mysql_query($sql, $con)) {
if (mysql_num_rows($result)) {
$record = mysql_fetch_assoc($result);
return $record['data'];
}
}
return '';
}
function _write($id, $data)
{
global $con;
$access = time();
$id = mysql_real_escape_string($id);
$access = mysql_real_escape_string($access);
$data = mysql_real_escape_string($data);
$sql = "REPLACE
INTO sessions
VALUES ('$id', '$access', '$data')";
return mysql_query($sql, $con);
}
function _destroy($id)
{
global $con;
$id = mysql_real_escape_string($id);
$sql = "DELETE
FROM sessions
WHERE id = '$id'";
return mysql_query($sql, $con);
}
function _clean($max)
{
global $con;
$old = time() - $max;
$old = mysql_real_escape_string($old);
$sql = "DELETE
FROM sessions
WHERE access < '$old'";
return mysql_query($sql, $con);
}
session_set_save_handler('_open',
'_close',
'_read',
'_write',
'_destroy',
'_clean');
你可以發佈有問題的功能嗎?他們是在一個班,他們是獨立的職能,等等... – 2011-03-13 18:43:57
剛剛編輯帖子,謝謝:) – 2011-03-13 18:48:32