Правильное хранение объектов в php? хочется закешировать результаты работы тяжелого класса. но непонятно как правильно хранить часто используемый объект (возвращается из метода класса) в кеше (файловый кеш, то есть хотелось бы в строку объект сохранить) . пробовал сериализацию, но в объекте защита.public function __wakeup() {
trigger_error('Unserializing is not allowed.', E_USER_ERROR);
}
убрал триггер - естественно, php криво сохранил объект
какие еще есть варианты?
php 5.5.23

21 Авг 2019 в 07:06
194 +1
0
Ответы
1

Если вы не можете использовать сериализацию объекта для кеширования его в файловом кеше из-за метода __wakeup(), то можно рассмотреть другой способ.

Один из вариантов - использовать библиотеку или расширение для PHP, такие как Memcached, Redis или APCu. Они позволяют хранить объекты в кеше и могут управлять сериализацией и десериализацией объектов автоматически.

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

Ниже приведен пример такого механизма кеширования:

class ObjectCache {
public static function saveObjectToFile($object, $filename) {
$serializedObject = serialize($object);
file_put_contents($filename, $serializedObject);
}
public static function getObjectFromFile($filename) {
$serializedObject = file_get_contents($filename);
return unserialize($serializedObject);
}
}
// Сохранение объекта в файл
$obj = new YourClassName();
ObjectCache::saveObjectToFile($obj, 'cached_object.txt');
// Получение объекта из файла
$cachedObj = ObjectCache::getObjectFromFile('cached_object.txt');

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

20 Апр 2024 в 13:07
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир