| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Vingrad CMS > XCache |
| Автор: Wowa 30.9.2006, 16:05 |
| http://wiki.vingrad.ru/PHP:XCache http://trac.lighttpd.net/xcache/ Я установил на сервере XCache. На мой взгляд данный модель кеширования станет стандартом и вскоре будет установлен почти на всех хостах. Поэтому предлагаю активно использовать его возможности. В частности, он позволяет сохранять значения переменных в памяти, а затем снова их использовать при последующем вызове скрипта. Ну и естественно у сервера отпадает необходимость каждый раз компиллировать ПХП-программу. Добавлено @ 16:06 Быть может для перестраховки следует вызывать эти функции кеширования через Interface. |
| Автор: sergejzr 2.10.2006, 10:23 |
Вроде даже уже стоит Да, это модуль с функциями xcache_get($label) и xcache_set($label,$data,$timetolive) Очень удобно и реактивно. Как memcache_modul. только быстрее, потому что односерверный. К тому же компилит скрипты он. Да, который хотябы проверяет, установлен ли сей замечательный модуль А вообще конечно для сложных структур типа меню, он незаменим. |
| Автор: IZ@TOP 2.10.2006, 10:43 |
| sergejzr, понял. Интересная штука, уже ставлю разбираться. Кстате, идея тут одна имеется, все классы наследуются от _ctl_Utils, может быть его унаследовать от _ctl_XCache (ну или в нем же реализовать), тогда у всех классов будет функционал для кеширования...? |
| Автор: sergejzr 2.10.2006, 10:46 |
| Всё таки лучше ИМХО выборочно кэшировать. А то получится всё подряд будем кэшить И ещё кэширование обьектов не работает (ессно, ведь они могут динамически менятся). Так что надо чтото врод serialize придумать. |
| Автор: IZ@TOP 2.10.2006, 12:00 | ||
Нужно бы подумать на сей счет над структурой классов. В принципе я не вижу проблемы в том чтобы по умолчанию возможности были заложены во всех классах. Есть какие нибудь мысли по поводу проблем связанных с таким подходом? По крайней мере конфиги модулей взятые из XML можно кешить прямо в память, это будет очень хорошим делом. |
| Автор: sergejzr 2.10.2006, 12:11 | ||||
Нет, проблем нет, но и смысла тоже нет. Дело в том, что мы говорим сейчас про кэш обьектов, а он не всегда нужен. Зависит уже от обьектов. Например структуру CMS ессно желательно хранить, а не воссоздавать при каждом вызове, но есть ли смыс кэшировать данные всех юзеров? А кэш классов у нас и так на аппаратном уровне xcache делает автоматом.
Да, это обязательно надо!. Хотя тут тоже, если конфиг в файле php, xcache его сам автоматом скэширует |
| Автор: Wowa 2.10.2006, 12:14 | ||
Тогда получается наша задача сводится лишь к тому, чтобы конфиги в ПХП файлы засовывать. |
| Автор: sergejzr 2.10.2006, 12:19 | ||
Каксательно конфигоф - можно сказать так, но ведь у нас не всё в файлах будет. Как раз почти всё надо хранить в БД и уже эту инфу кэшировать. Тогда по-умному получится. А в конфиге хранить структуру софта только (директории, инклуды, библиотеки) |
| Автор: 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 Сереж, я уж понял про файлы |
| Автор: sergejzr 2.10.2006, 14:06 | ||
Боюсь в свои ворота сыграть. Данные будут дублированы скорее всего. Где -то нужно одно, где то другое.. Хотя про пользовательские данные это я образно А вообще.. в принципе ничего путного "против" сказать не могу |
| Автор: 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, 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 | ||
На винграде стоит такая связка:
Добавлено @ 14:12 IZ@TOP, есть два варинта, как прописывать в php.ini как zend_extension - именно так рекомендуется и именно так на Винграде сейчас прописан он или же просто, как extension - также в php.ini |
| Автор: IZ@TOP 4.10.2006, 17:17 |
| Wowa, он и так и так не хочет ни с Zend Optimizer ни с ZendDebugger'ом работать... Добавлено @ 17:24 Такс... у меня вообще апач отваливается... ни хочет нифига работать... под виндами просто "приложение совершило вандалистский акт и будет закрыто", под никсами отлетело по таймауту... |