【发布时间】:2011-07-14 13:44:18
【问题描述】:
我正在使用负载均衡器设置 EC2 集群。我有单独的数据库服务器,上面运行着 mysql。我有 3 个网络服务器正在运行,主要是为了实现高可用性,当然还有它看起来的循环负载平衡,所以你访问的每个页面都会得到一个不同的服务器,这会失去你的会话。
我正在尝试设置 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');
【问题讨论】:
-
你能发布有问题的功能吗?它们是否在一个类中,它们是独立的函数,等等......
-
刚刚编辑了帖子,谢谢:)
标签: php mysql apache amazon-ec2 load-balancing