Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Vingrad CMS > XCache


Автор: Wowa 30.9.2006, 16:05
http://wiki.vingrad.ru/PHP:XCache
http://trac.lighttpd.net/xcache/
Я установил на сервере XCache. На мой взгляд данный модель кеширования станет стандартом и вскоре будет установлен почти на всех хостах.
Поэтому предлагаю активно использовать его возможности. В частности, он позволяет сохранять значения переменных в памяти, а затем снова их использовать при последующем вызове скрипта. Ну и естественно у сервера отпадает необходимость каждый раз компиллировать ПХП-программу.

Добавлено @ 16:06 
Быть может для перестраховки следует вызывать эти функции кеширования через Interface.

Автор: IZ@TOP 2.10.2006, 10:15
Wowa, интересная мысль. Думаю что можно воспользоваться данной возможностью. Предлагается установить на девелоперских машинах данную фичу?
Цитата(Wowa @  30.9.2006,  17:05 Найти цитируемый пост)
Быть может для перестраховки следует вызывать эти функции кеширования через Interface. 

Я так понял что это все подключается как модуль?

Хотя какая разница, гляну тогда еще вопросы напишу, если они появятся.

Автор: sergejzr 2.10.2006, 10:23
Цитата(IZ@TOP @  2.10.2006,  08:15 Найти цитируемый пост)
Предлагается установить на девелоперских машинах данную фичу?

Вроде даже уже стоит smile
Цитата(IZ@TOP @  2.10.2006,  08:15 Найти цитируемый пост)
Я так понял что это все подключается как модуль?

Да, это модуль с функциями xcache_get($label) и xcache_set($label,$data,$timetolive)
Очень удобно и реактивно. Как memcache_modul. только быстрее, потому что односерверный. К тому же компилит скрипты он.

Цитата(IZ@TOP @  2.10.2006,  08:15 Найти цитируемый пост)
следует вызывать эти функции кеширования через Interface

Да, который хотябы проверяет, установлен ли сей замечательный модуль smile

А вообще конечно для сложных структур типа меню, он незаменим.


Автор: IZ@TOP 2.10.2006, 10:43
sergejzr, понял. Интересная штука, уже ставлю разбираться.
Кстате, идея тут одна имеется, все классы наследуются от _ctl_Utils, может быть его унаследовать от _ctl_XCache (ну или в нем же реализовать), тогда у всех классов будет функционал для кеширования...?

Автор: sergejzr 2.10.2006, 10:46
Всё таки лучше ИМХО выборочно кэшировать. А то получится всё подряд будем кэшить smile 
И ещё кэширование обьектов не работает (ессно, ведь они могут динамически менятся). Так что надо чтото врод serialize придумать.

Автор: IZ@TOP 2.10.2006, 12:00
Цитата(sergejzr @  2.10.2006,  11:46 Найти цитируемый пост)
Всё таки лучше ИМХО выборочно кэшировать. А то получится всё подряд будем кэшить

Нужно бы подумать на сей счет над структурой классов. В принципе я не вижу проблемы в том чтобы по умолчанию возможности были заложены во всех классах. Есть какие нибудь мысли по поводу проблем связанных с таким подходом? По крайней мере конфиги модулей взятые из XML можно кешить прямо в память, это будет очень хорошим делом.

Автор: sergejzr 2.10.2006, 12:11
Цитата(IZ@TOP @  2.10.2006,  10:00 Найти цитируемый пост)
В принципе я не вижу проблемы в том чтобы по умолчанию возможности были заложены во всех классах. Есть какие нибудь мысли по поводу проблем связанных с таким подходом?

Нет, проблем нет, но и смысла тоже нет. Дело в том, что мы говорим сейчас про кэш обьектов, а он не всегда нужен. Зависит уже от обьектов. Например структуру CMS ессно желательно хранить, а не воссоздавать при каждом вызове, но есть ли смыс кэшировать данные всех юзеров?

А кэш классов у нас и так на аппаратном уровне xcache делает автоматом.

Цитата(IZ@TOP @  2.10.2006,  10:00 Найти цитируемый пост)
По крайней мере конфиги модулей взятые из XML можно кешить прямо в память, это будет очень хорошим делом. 

Да, это обязательно надо!. Хотя тут тоже, если конфиг в файле php, xcache его сам автоматом скэширует  smile 

Автор: Wowa 2.10.2006, 12:14
Цитата(sergejzr @  2.10.2006,  11:11 Найти цитируемый пост)
Хотя тут тоже, если конфиг в файле php, xcache его сам автоматом скэширует

Тогда получается наша задача сводится лишь к тому, чтобы конфиги в ПХП файлы засовывать.

Автор: sergejzr 2.10.2006, 12:19
Цитата(Wowa @  2.10.2006,  10:14 Найти цитируемый пост)
Тогда получается наша задача сводится лишь к тому, чтобы конфиги в ПХП файлы засовывать. 

Каксательно конфигоф - можно сказать так, но ведь у нас не всё в файлах будет. Как раз почти всё надо хранить в БД и уже эту инфу кэшировать. Тогда по-умному получится. А в конфиге хранить структуру софта только (директории, инклуды, библиотеки)

Автор: IZ@TOP 2.10.2006, 13:52
sergejzr, на счет разделения данных то что в бд/файлах это понятно, я имел ввиду исключительно конфигурационные настройки.

Автор: sergejzr 2.10.2006, 13:55
xcache держит в памяти скомпиленные php-скрипты. То есть если скрипт состоит из переменных (как конфиг), все будут кэшироваться автоматом.

Автор: IZ@TOP 2.10.2006, 13:56
В таком случае будет несколько контроллеров от которых обязательно будет должен наследоваться каждый модуль, причем можно сделать несколько реализаций - кешируемые и некешируемые.
Кстате, а что ты имеешь против кеширования некоторых пользовательских данных?

Добавлено @ 13:58 
Сереж, я уж понял про файлы smile хотя все равно спасибо  smile 

Автор: sergejzr 2.10.2006, 14:06
Цитата(IZ@TOP @  2.10.2006,  11:56 Найти цитируемый пост)
Кстате, а что ты имеешь против кеширования некоторых пользовательских данных?

Боюсь в свои ворота сыграть. Данные будут дублированы скорее всего. Где -то нужно одно, где то другое..

Хотя про пользовательские данные это я образно smile Если например у нас в классе переменных нет, то кэшировать так же нечего.

А вообще.. в принципе ничего путного "против" сказать не могу smile

Автор: IZ@TOP 2.10.2006, 17:10
sergejzr, я не говорю кешировать все подряд - методы будут наследованы, но не реализованы если это не нужно. 
Хотя, мне все же хочется эту ситуацию разрулить. Поскольку у нас каждый модуль наследует специфичный функционал для модулей от определенного контроллера маодулей, может быть создать переопредленный абстрактный класс контроллера, который в плюс будет реализовывать интерфейс кеш класса.
В общем такие мысли.

Автор: IZ@TOP 3.10.2006, 16:40
Интереснейшая мысль пришла. А объект PDO с коннектом к базе можно ли в памяти держать?

Автор: sergejzr 3.10.2006, 16:53
К сожалению кэшировать можно только данные (т.е arrays) Этим от сервелета отличается, конечно. И там траблу я обнаружил с бинарными данными. Они не кэшируются нормально.

Автор: IZ@TOP 4.10.2006, 09:18
sergejzr, а подробнее можно про глюки с кешированием бинарных данных?
И кстате, кто-то вроде говорил на счет кеширования объектов?

Автор: sergejzr 4.10.2006, 09:28
Цитата(IZ@TOP @  4.10.2006,  07:18 Найти цитируемый пост)
И кстате, кто-то вроде говорил на счет кеширования объектов? 

Классов. И это кэшированные ПХП-файлы. Для обьектов надо будет писать функцию сериалайз, хотя это ессно не поможет для функций.


Цитата(IZ@TOP @  4.10.2006,  07:18 Найти цитируемый пост)
sergejzr, а подробнее можно про глюки с кешированием бинарных данных?

Подробнее? smile не кэшируются они. Я пробовал гзипанную строку сохранять, сохраняются только первые несколько байт (думаю до первого 0)

Автор: IZ@TOP 4.10.2006, 11:27
sergejzr, ясно... а подробнее, имел ввиду что интересно по какой причине это происходит...

Автор: sergejzr 4.10.2006, 11:39
IZ@TOP, думаю, что стандартные строки только сохраняются (не знаю). Хочу с автором переговорить на эту тему.

Добавлено @ 11:39 
Просто обычно бинары и сохранять не надо. В ПХП в основном всё - строки..

Автор: IZ@TOP 4.10.2006, 14:00
Блин, XCache конфликтит с зендой... у меня ZendStudioServer для профайлинга стоит, так вот XCache пишет что не совместим с ZendOptimizer... хотя сам оптимайзер не стоит. Если убрать настройки зенды из php.ini все работает... красота!

Автор: Wowa 4.10.2006, 14:10
На винграде стоит такая связка:
Цитата

Zend Engine v2.1.0, Copyright © 1998-2006 Zend Technologies
    with the ionCube PHP Loader v3.1.22, Copyright © 2002-2006, by ionCube Ltd., and
    with XCache v1.0.2, Copyright © 2005-2006, by mOo


Добавлено @ 14:12 
IZ@TOP, есть два варинта, как прописывать в php.ini
как zend_extension - именно так рекомендуется и именно так на Винграде сейчас прописан он

или же просто, как extension - также в php.ini

Автор: IZ@TOP 4.10.2006, 17:17
Wowa, он и так и так не хочет ни с Zend Optimizer ни с ZendDebugger'ом работать...

Добавлено @ 17:24 
Такс... у меня вообще апач отваливается... ни хочет нифига работать... под виндами просто "приложение совершило вандалистский акт и будет закрыто", под никсами отлетело по таймауту...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)