Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сохранение XS объектов в memcache, есть какой хак? 
:(
    Опции темы
KSURi
Дата 21.7.2009, 20:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 887
Регистрация: 8.6.2006
Где: Russia

Репутация: 20
Всего: 27



Привет.

Захотелось мне сохранять в memcache распарасенный XML. Для работы с XML в проекте везде используется XML::LibXML, использовать другие модули не хочется. Проблема в том, что сохранять в кэш XS-объекты нельзя(
Может кто-то сталкивался? Есть какие-то хаки?


--------------------
Died at Life.pl line 21
PM Jabber   Вверх
gcc
Дата 21.7.2009, 21:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: 1
Всего: 17



может cерилизировать JSon или Storable и сохранить?

Добавлено через 6 минут и 41 секунду
Код

 use MIME::Base64;
 use Storable qw/nfreeze thaw/;
 my $decoded = thaw(decode_base64($loop_data->{session_data}));
use Data::Dumper;
  print Dumper($decoded);




Код

$VAR1 = {
          '__user_realm' => 'default',
          '__created' => '1233338621',
          '__user' => '1',
          '__updated' => '1233338622'
        };

PM WWW ICQ Skype GTalk Jabber   Вверх
arto
Дата 22.7.2009, 20:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



если объект может самосериализоваться (сохранять внутреннее состояние), то проблем нет.
если не может, то можете дописать требуемую функциональность и послать патч мантайнеру.
PM MAIL ICQ   Вверх
KSURi
Дата 22.7.2009, 20:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 887
Регистрация: 8.6.2006
Где: Russia

Репутация: 20
Всего: 27



Цитата(arto @  22.7.2009,  20:10 Найти цитируемый пост)
если объект может самосериализоваться (сохранять внутреннее состояние), то проблем нет.

Их бы не было, если бы объект создавался PurePerl кодом. Когда вы пытаетесь сохранить объект созднный XS кодом, то сохраняется по сути только указатель на сишную структуру.


--------------------
Died at Life.pl line 21
PM Jabber   Вверх
arto
Дата 23.7.2009, 09:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



ключевое слово "самосериализоваться"
PM MAIL ICQ   Вверх
sir_nuf_nuf
Дата 23.7.2009, 10:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 920
Регистрация: 6.1.2008

Репутация: 14
Всего: 31



KSURi, конечно нельзя. XS объект - это C структура(ы) которые привязаны к адресам в памяти, для того что бы записать их MC - нужно избавиться от адресной привязки, т.е. сереализовать.

В вашем случае XML - это и есть сереализованное представление. Так что храните сам XML а не DOM модель.

Парсится медленно - юзайте libxml2. Все равно медленно? не юзайте XML. 


--------------------
user posted image
user posted image
PM MAIL Jabber   Вверх
KSURi
Дата 23.7.2009, 10:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 887
Регистрация: 8.6.2006
Где: Russia

Репутация: 20
Всего: 27



Цитата(sir_nuf_nuf @  23.7.2009,  10:05 Найти цитируемый пост)
KSURi, конечно нельзя. XS объект - это C структура(ы) которые привязаны к адресам в памяти, для того что бы записать их MC - нужно избавиться от адресной привязки, т.е. сереализовать.

Я в курсе)
Цитата(sir_nuf_nuf @  23.7.2009,  10:05 Найти цитируемый пост)
Парсится медленно - юзайте libxml2. Все равно медленно? не юзайте XML.  

В первом посте я написал, что юзаю XML::LibXML, который является оберткой к libxml2.
"не юзать XML" не получится.

В принципе, я уже понял, что придется думать в другую сторону. Вопрос можно считать снятым.


--------------------
Died at Life.pl line 21
PM Jabber   Вверх
sir_nuf_nuf
Дата 23.7.2009, 11:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 920
Регистрация: 6.1.2008

Репутация: 14
Всего: 31



KSURi, можно конечно "расчехлить свой компилер" и написать примочку для libxml2 на C, что бы DOM структуру упаковывала в линейный кусок памяти, а потом обратно. Это будет круто, ибо на такую задачу натыкались кроме вас люди (как минимум я =)). 

В конце я решил, что 8 тыс. разборов / сереализаций в секунду (для XML на экран размером) - это достаточно быстро, что бы не парится.


--------------------
user posted image
user posted image
PM MAIL Jabber   Вверх
shamber
Дата 24.7.2009, 11:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: 17
Всего: 18



XML2JSON не то?
PM MAIL Jabber   Вверх
sir_nuf_nuf
Дата 24.7.2009, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 920
Регистрация: 6.1.2008

Репутация: 14
Всего: 31



shamber, XML и JSON далеко не эквиваленты. к тому же эта та же самая сереализация. Не думаю, что это намного быстерее чем внутренний механизм libxml2. 


--------------------
user posted image
user posted image
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0722 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.