Использование Apache::Session::Memcached с MasonX::Request::WithApacheSession

Я пытаюсь использовать Apache ::Session::Memcached в HTML::Mason, в котором я использую MasonX::Request::WithApacheSession для обработки моих сеансов. К сожалению, Apache не запустится, когда я подключу модуль Memcached вместо модуля MySQL. Мой пользовательский обработчик выглядит примерно так (несколько фрагментов здесь и там):

my $ah = HTML::Mason::ApacheHandler->new (
    comp_root                   =>  $ENV{HTDOCS},
    data_dir                    =>  $data_dir,
    request_class               =>  'MasonX::Request::WithApacheSession',
    session_use_cookie          =>  0,
    args_method                 =>  "mod_perl",
    session_args_param          =>  'session_id',
    session_class               =>  'Apache::Session::Memcached',
    session_Servers             =>  '127.0.0.1:20000',
    session_Readonly            =>  0,
    session_Debug               =>  1,
    session_cookie_domain       =>  $CONF->{global}->{site_name},
    session_cookie_expires      =>  "session",
    session_allow_invalid_id    =>  0,                                          
    );   

Проблема, с которой я сталкиваюсь, заключается в том, что параметры session_*, характерные для Memcached, не передаются в Apache::Session::Memcached, например документы говорят, что так должно быть. Это приводит к этой ошибке:

The following parameter was passed in the call to HTML::Mason::ApacheHandler->new()
but was not listed in the validation options: session_Servers

Теперь я прошел и поменял все 3 аргумента верхнего регистра на нижний регистр, но безрезультатно. И документы для Apache::Session:: Memcached перечисляет их в верхнем регистре.

Большое спасибо за любую помощь.


person Jack M.    schedule 30.06.2009    source источник


Ответы (1)


Похоже, вам необходимо зарегистрировать Apache::Session::Memcached с Apache::Session::Wrapper, следуя инструкциям на странице http://search.cpan.org/perldoc/Apache::Session::Wrapper#REGISTERING_CLASSES примерно так (любезно предоставлен код Джека М.):

Apache::Session::Wrapper::->RegisterClass(
    'name' => 'Apache::Session::Memcached',
    'required' => [ [ 'Servers' ], ],
    'optional' => [ 'NoRehash', 'Readonly', 'Debug', 'CompressThreshold', ],
);
person ysth    schedule 01.07.2009
comment
Вы, сэр/мадам, мужчина/женщина! Я ломал себя над этим. У меня нет представителя, чтобы отредактировать ваш пост, но вы должны добавить это сюда: Apache::Session::Wrapper-›RegisterClass( name =› 'Apache::Session::Memcached', required =› [ [ ' Серверы' ], ], необязательный =› [ 'NoRehash', 'Только чтение', 'Отладка', 'CompressThreshold', ], ); - person Jack M.; 01.07.2009