проблема инициализации сессии

shoura

Новичок
проблема инициализации сессии

привет всем!
у меня возникла проблема:
-PHP 4.3.0
- я использую альтернативный способ хранения сессий (в БД),
- запускаются сесии следующим образом:
PHP:
function _Sess_start()
   {
      ini_set('session.save_handler','user');
      ini_set('session.gc_probability','100');
      ini_set('session.gc_maxlifetime','86400');
      session_set_save_handler("_Sess_open","_Sess_close","_Sess_read","_Sess_write","_Sess_destroy","_Sess_GC");
      session_start();
   }
- и вот в последней-то строке загвоздка:
----------------------------------------------------------
Fatal error: session_start() [function.session-start]: Failed to initialize session module in C:\host\inc\shop_session.inc on line 119
----------------------------------------------------------
- при этом в php.ini и при вызове phpinfo() настройки приняты

если нужна еще информация, скажите, заранее благодарен...
 

Фанат

oncle terrible
Команда форума
не умеешь - не берись.
Для вшивой корзинки от магазинки обработчик в базе даром не нужен.
 

shoura

Новичок
Спасибо, я разобрался причина в следующем:
все функции, объявленные в session_set_save_handler() были методами класса, в который управляет сессиями, а не просто функциями
ПХП среди обычных функций объявленных не нашел и ... обшибка
-------------------------------------------------------------------------------------------
вынес функции из класса и все работает! , что странно и подозрительно :^)
Фанат, я понимаю, но пробовать охота...
 

SiMM

Новичок
> вынес функции из класса и все работает!
[m]session_set_save_handler[/m]
Примеры от 31-Jan-2003 02:04 и раннее.
 

shoura

Новичок
Спасибо, SiMM, я читал, все именно так, только что сохраняются в БД, а не файл
 

SiMM

Новичок
> я читал
Тогда зачем
> вынес функции из класса
когда в этом ровным счётом не было никакой необходимости?
 

SiMM

Новичок
Потому что оно и как класс вполне даже работает. Как - показано в примерах из мануала, кои ты до сих пор не удосужился даже посмотреть.
 

shoura

Новичок
SiMM
session_set_save_handler() уже в 10 раз смотрю, никакого класса что-то я там не вижу...
------------------------------------------------------------------------------
- да и в других примерах и реальных проектах, основанных на ООП именно эти-то функции ни в какой класс не входят...
- да и я-то разбирался и пробовал, а ты, кажется, просто рассуждаешь
 

SiMM

Новичок
Специально для тех, кому влом открыть мануал и прочесть его
Joe Wheeler
31-Jan-2003 04:04
If you happen to want to build a session manager object you can set the handlers from inside the class. This helps to keep the class encapsulated which helps make it nice and reusable.
PHP:
class Session_manager {
...
   session_set_save_handler(
       array(& $this, 'session_open_method'), 
       array(& $this, 'session_close_method'), 
       array(& $this, 'session_read_method'), 
       array(& $this, 'session_write_method'), 
       array(& $this, 'session_destroy_method'), 
       array(& $this, 'session_gc_method')
   );
...
}
Each handler is identified by an array containing a self-reference to the instance (note the &) and a string identifying a method in the session manager class.

Remember that the new operator passes back a copy of the object. This is important if you want to call session_set_save_handler() from inside the class constructor. You must remember to use another reference when you create the instance...

$my_session_manager = & new Session_manager;

Otherwise the session handlers will be assigned to an instance which is created by the new operator and NOT to the copy which is stored in the variable $my_session_manager.
 

shoura

Новичок
Pardon, кажется я действительно не дочитал до этой ерунды (влом было дальше переводить...:^))
Так что, придется:
1) запомнить это
2) ... а лучше сохранить
3) подробнее читать мануал
4) взять свои слова обратно
---------------------------------------------------------------------------------
спасибо
 
Сверху