session_set_save_handler + php 5.2.0

masterok

Новичок
session_set_save_handler + php 5.2.0

Добрый день.
Столкнулся с несовсем понятным мне поведением скрипта при использовании session_set_save_handler.
Ф-я используется с целью хранения сессий в mysql.

Ниже небольшой кусок кода заменяющий стандартную ф-ю write

$DB_INFO - массив хранящий настройки доступа к mysql (объявленный ранее)
$Sql - объект (объявленный ранее)

34 function write($id, $sess_data)
35 {
36 global $Sql,$DB_INFO;
37
38 $Sql->getQuery("SELECT session_id FROM $DB_INFO[TB_SES] WHERE session_key = '$id' AND valid = 'yes' AND ip_address='".$_SERVER['REMOTE_ADDR']."'");

if ($Sql->getNumRows())
{
// session exists: update
$row = $Sql->fetchRow();
$session_id = $row[0];
$query = "UPDATE $DB_INFO[TB_SES] SET session_data='". mysql_escape_string($sess_data) ."',last_time='".time()."' WHERE session_id='$session_id' AND ip_address='".$_SERVER['REMOTE_ADDR']."'";
}
else
{
// session does not exist: insert
$query = "INSERT INTO $DB_INFO[TB_SES] (last_time,valid,session_key,session_data,ip_address) VALUES ('".time()."','yes','". mysql_escape_string($id) ."','". mysql_escape_string($sess_data) ."','".$_SERVER['REMOTE_ADDR']."')";
}
$Sql->getQuery($query);
return true;
}

session_set_save_handler("open", "close", "read", "write", "destroy", "gc") or die("Failed to register session handler");

Данная ф-я отлично ранее работала на всех хостингах и всех версиях пхп, однако на одном их хостингов где стоит последний php 5.2.0, получаю ошибку:
Fatal error: Call to a member function getQuery() on a non-object in /usr/local/.../class_sessions.php on line 38

Смысл ошибки понятен, однако причина ошибки не ясна, т.к. объект $Sql объявлен до session_start().

Скажем если в начале скрипта написать print_r($Sql) - то благополучно получаю указатель на объект, а print_r($Sql) внутри ф-и write() результата не даёт.
Складывается такое впечатление что global $Sql в ф-ии просто не работает.

-~{}~ 05.12.06 10:18:

Неужели неукого нет мыслей по этому поводу ?
 
Сверху