Работа с Runtime Cache
Pimcore активно использует runtime-кэширование для сохранения результатов работы API в целях повышения производительности. Однако критически важно понимать, как работать с кэшированными результатами, чтобы через API всегда использовались корректные и актуальные данные. Рассмотрим несколько примеров для понимания подобных ситуаций:
//Удаление элемента из списка
$list = new \Pimcore\Model\DataObject\Myclassname\Listing;
//или
$list = new \Pimcore\Model\Document\Listing;
//или
$list = new \Pimcore\Model\Asset\Listing;
$list->load();
$list->current()->delete(); //Удаляем текущий элемент из списка
$list->load(); //Вызываем load() снова, чтобы сбросить runtime-кэш и обновить список
foreach ($list as $element) {
...
}
//использование параметра force для загрузки последних данных из базы данных
\Pimcore\Model\DataObject::getById(123) === \Pimcore\Model\DataObject::getById(123) => true
\Pimcore\Model\DataObject::getById(123) === \Pimcore\Model\DataObject::getById(123, ['force' => true]) => false
Использование большого количества объектов в одном процессе может привести к ошибке «нехватка памяти» (not enough memory). Это часто случается при итерации через тысячи объектов при их чтении или создании. Пожалуйста, обратитесь к этому разделу, чтобы решить проблемы с памятью, которые также очищают кэш выполнения вместе с задачами.
Вы можете предложить улучшение документации или задать вопрос в комментариях.
Если вам нужна полноценная консультация — вы можете заказать её на нашем сайте.