Для чего нужны вот такие классы кэширования?

AnrDaemon

Продвинутый новичок
Например, структуру меню на странице хранить. Обращаются к ней постоянно, а меняется она раз в год по обещанию. Простраивать её в PHP каждый раз - тупо.
 

hell0w0rd

Продвинутый новичок
Где вы такое дерьмо находите?))
https://packagist.org/search/?q=cache - вот где пакеты искать нужно.
Ну и пока тебе не нужен подобный класс - не заморачивайся. Всегда, когда вопрос можно решить без кеширования - решай его так.
Например, структуру меню на странице хранить. Обращаются к ней постоянно, а меняется она раз в год по обещанию. Простраивать её в PHP каждый раз - тупо.
идиотский совет. Если это не узкое место - то тупо его хранить в кеше, потому что это не узкое место!
 

antson

Новичок
Партнер клуба
кеш на файловой системе в реальности юзают только тизерки .
а то, что по ссылке отвратительный вариант.
потом папку с кешем с миллионом файлов замучаешься чистить
 

MiksIr

miksir@home:~$
Это узкое место. 90% времени построения страницы уходит на построение меню.
Премьер Медведев: 90% лекарств должны производиться в России
Сергей Гимаев: «Давайте честно скажем – 90% игроков мечтают выступать в СКА»
AliExpress – Горящие товары, скидки до 90%
27 марта билеты в театр будут продавать со скидкой до 90%
Тоник с гидролатом ромашки Mizon Camomile 90% Toner
Явка на президентских выборах в Казахстане приближается к 90%
Страусоводство - рентабельность бизнеса 90%
90% от общей аудитории рунета просматривают объявления рекламной сети «Яндекс.Директ»
90% мужчин в возрасте от 60 лет болеют простатитом
Почему 90% крупной российской собственности зарегистрировано в оффшорах?
Microsoft: 90% ранее таргетировавших Java хакеров теперь эксплуатируют бреши в Adobe Flash
 

Redjik

Джедай-мастер
Кстати, файловый кеш не всегда говенное решение, Гриша тесты делал, сейчас не воспроизведу, но вроде шустро было...
Эт конечно, если файл кеша тупо хранит пэхапэшный массив, тогда он кешируется в опкоды.
 

hell0w0rd

Продвинутый новичок
Кстати, файловый кеш не всегда говенное решение, Гриша тесты делал, сейчас не воспроизведу, но вроде шустро было...
Эт конечно, если файл кеша тупо хранит пэхапэшный массив, тогда он кешируется в опкоды.
да можно и in memory fs поднять, только сути это не изменит, человек вообще не с того конца зашел в тему кешировния.
 

AmdY

Пью пиво
Команда форума
Нашел в сети класс:
Кстати, файловый кеш не всегда говенное решение, Гриша тесты делал, сейчас не воспроизведу, но вроде шустро было...
Эт конечно, если файл кеша тупо хранит пэхапэшный массив, тогда он кешируется в опкоды.
При неправильном кешировании в php десериализация и вовсе может убить производительность.
 

fixxxer

К.О.
Партнер клуба
Уже который год ленюсь проверить, кэшируется ли опкод-кэшером include на stream wrappers. Из общих соображений - должно, если враппер реализует stat() и сопутствующее. =)
 

antson

Новичок
Партнер клуба
а там нет намека на миллион, он все ключи в одном файле хранит ^_^
не копался сильно в функции создания имени файла. посмотрел, только , что под папок не делает.
Ну а если все в одном файле, то все еще печальней ( локи или креш кеша) под нагрузкой.
 

Breeze

goshogun
Команда форума
Партнер клуба
не копался сильно в функции создания имени файла. посмотрел, только , что под папок не делает.
Ну а если все в одном файле, то все еще печальней ( локи или креш кеша) под нагрузкой.
ога, вот и ответ: такой нафиг не нужен :)
если нагрузка, то высокая вероятность поломки, а если нагрузки нет, то зачем кеш? :)

да и без нагрузки два параллельных запроса могут поломать все, я там лока не увидел.
 
Последнее редактирование:

Breeze

goshogun
Команда форума
Партнер клуба
Кстати, все либы, с которыми сталкивался и которые делают кеш в фс страдают от одной особенности.
Они проверяют успешно или нет записан контент (false или нет) и не проверяют совпадает ли записанное количество байт с размером записываемого контента.

При этом между file_put_contents и fwrite есть одна забавная разница.

Когда в процессе записи наступает нечто типа no space left on device, то file_put_contents выдает warning типа
PHP Warning: file_put_contents(): Only 589924 of 655360 bytes written, possibly out of free disk space
и возвращает false, но при этом кусок в 589924 байт реально записан -- данные испорчены.

fwrite всегда выдает сколько байт записал без warning'а и можно проверить $content_length == $bytes_written

Про использование временных файлов, чтобы не испортить текущий вообще молчу.
 
  • Like
Реакции: WMix

fixxxer

К.О.
Партнер клуба
Не, ну как без временных файлов то, так нельзя, это ж детская ошибка.

Кстати, fclose() тоже надо проверять. На некоторых ФС ошибка с некоторой вероятностью прилетит не в fwrite, а на него. XFS, например.
 

Breeze

goshogun
Команда форума
Партнер клуба
Не, ну как без временных файлов то, так нельзя, это ж детская ошибка.
Кстати, fclose() тоже надо проверять. На некоторых ФС ошибка с некоторой вероятностью прилетит не в fwrite, а на него. XFS, например.
все надо проверять, если параноить, то по полной :)
вариантов нарваться на забитый диск масса, вероятность маленькая, но случается как всегда тогда, когда наименее удобно
 

fixxxer

К.О.
Партнер клуба
Мне вспомнилась история с KDE, утилита конфигурирования которого не проверяла результат fclose() и в итоге временами протеривала конфиги на XFS.
"Виноватыми" у них, конечно, были разработчики XFS :)
 
Сверху