Покинул форум
Сообщений всего: 454
Дата рег-ции: Апр. 2012
Помог: 7 раз(а)
Доброго времени суток.
Вот набросал легенький скелет для управления не временным кэшем.
Класс имеет 3 общедоступных метода - set,get,clean.
Метод set, при записи кеша, добавляет информацию о добавлении кеша в его собственный "реестр", так как у одной статьи может быть несколько кешей. При выполнении метода clean, берутся все файлы с кешем и удаляются или очищаются как и сам реестр.
Плюсы - легко отслеживать и чистить кеш по его имени.
Минуса - их больше
Посмотрите, скажите будет ли с этого толк, или может бред очередной?
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
Минусы? По сути кеш работает с ФС, операции чтения-записи будут дорогими по времени. Кеш нужно хранить в памяти, тем самым он действительно увеличит быстродействие. А кеш-сервис должен быть быстрым, так что не стоит его писать на php. А если так - то проще взять готовый memcached.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
dubasua
Отправлено: 19 Февраля, 2013 - 10:01:24
Посетитель
Покинул форум
Сообщений всего: 454
Дата рег-ции: Апр. 2012
Помог: 7 раз(а)
EuGen, спасибо за наводку.
EuGen пишет:
Кеш нужно хранить в памяти
Но для этого нужно дополнительное ПО, чего нет на покупных хостингах.
EuGen
Отправлено: 19 Февраля, 2013 - 10:09:08
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
Значит, нужно выбирать хостинг, где это есть. Реалии таковы, что для решения задачи нужно выбирать ровно те инструменты, которые для нее предназначены. Написать php-демона, который будет работать наподобие memcached-можно. Но скорость такого кеша будет хромать. А кеш нужен почти всегда для ускорения и только для него.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
dubasua
Отправлено: 19 Февраля, 2013 - 10:12:20
Посетитель
Покинул форум
Сообщений всего: 454
Дата рег-ции: Апр. 2012
Помог: 7 раз(а)
Только что родилась идея записывать кеш в БД, в таблицу типа MEMORY. Это разумно???
EuGen
Отправлено: 19 Февраля, 2013 - 10:31:41
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
Для кеша - опять же, нет. Потому что - пусть MEMORY-тип таблиц и хорош тем, что хранит данные в ОЗУ, однако же в случае кеша основная задача - сократить обращения к БД (количественно и/или качественно), так как это - сетевой оверхед, время на исполнение запросов и т.п. Разумеется, если речь идет о MEMORY-типе, понятие кеширования со стороны СУБД здесь неприменимо - (таблица и так есть суть набор данных в ОЗУ). Это - никак не влияет на сами данные, но вот кеш индексов оказывается недоступен так же. Поэтому в сравнении с классическими storage-engine этот тип будет иметь преимущество, но все равно - из-за работы с СУБД - для кеша эта идея не кажется хорошей. СУБД ведь часто занята другими важными вещами, которые требуются от неё приложением.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
dubasua
Отправлено: 19 Февраля, 2013 - 10:38:05
Посетитель
Покинул форум
Сообщений всего: 454
Дата рег-ции: Апр. 2012
Помог: 7 раз(а)
EuGen, еще раз спасибо за пояснения.
DeepVarvar
Отправлено: 19 Февраля, 2013 - 18:05:10
Активный участник
Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008 Откуда: Альфа Центавра
Помог: 353 раз(а)
EuGen пишет:
не стоит его писать на php. А если так - то проще взять готовый memcached
Я как всегда влезу
Есть возможность юзать реальную память без мемкешей, которые, к слову, не имеют системы блокировки на время чтения/записи, и постановки в очередь "клиентов", что может вызывать некоторые коллизии при частом обращении к этому кешу.
Вот по сути решение на "чистом пыхе", которое я использовал для демонов на php.
Классец писался в те времена, когда не было встроенного, или он был глюкавый, не суть важно..
Данные помещаются в "реальную" RAM, в которой выделена область, дескриптор которой и фигурирует в этом классе.
Минус в том, что решение (вроде как) НЕ работает в виндах.
И точно НЕ работает для апачевского модуля.
Зато прекрасно подходит для CLI, CGI и их производных.
Область памяти "жива" до тех пор пока сервер не перезапустят, или пока явно не удалят этот сегмент от рута.
И естессно все копии скриптов могут читать эту память.
По типу как сессии, тока не в файлах, а в памяти.
Дык еще и ОБЩЕЕ хранилище, например как NoSQL решение.
Вобщем применений куча
Покинул форум
Сообщений всего: 454
Дата рег-ции: Апр. 2012
Помог: 7 раз(а)
DeepVarvar, это же круто,
DeepVarvar пишет:
И точно НЕ работает для апачевского модуля
Дык у меня сервак apache на компе, все работает, или я не понял что такое апачевский модуль?
И что такое ключики семафора и шары???
DeepVarvar
Отправлено: 19 Февраля, 2013 - 19:11:36
Активный участник
Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008 Откуда: Альфа Центавра
Помог: 353 раз(а)
dubasua пишет:
шары
Это шАра, как файловая шАра. А семафоры это доступ к "состояниям" RAM для чтения/записи.
И ключик и шару ты назначаешь сам. Главное чтобы это были целые числа.
Таких областей памяти можно сделать сколько нужно.
И зная ключики можно из другого скрипта получить доступ к этим данным.
Ну если работает, значит хорошо.
Покинул форум
Сообщений всего: 454
Дата рег-ции: Апр. 2012
Помог: 7 раз(а)
Спасибо, буду юзать. Больше радует что может запоминать данные любого типа.
EuGen
Отправлено: 19 Февраля, 2013 - 20:07:08
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
DeepVarvar
Во-первых, нужно shm. Есть не всегда. Во-вторых, кеш в моем понимании - некоторое разделяемое устройство, у которого нет блокировок в принципе. Каждый обратившийся php-процесс имеет свой кеш. Если будет время - представлю что-нибудь в этом роде (соберу из "запчастей", что есть по разным проектам) - но, повторюсь, писать кеш на интерпретируемом языке для реальной боевой high-load-системы - дело не правильное.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.