Что именно делает файловое приложение/etc/использует кэш.сир ду?


Сегодня днем я столкнулся с ошибкой кэширования, которая обычно (по единодушному мнению веб-сайтов) решается (и в данном случае была) путем удаления app/etc/use_cache.ser. Что именно делает этот файл? Содержание ни в коем случае не является описательным. Кроме того, в какой момент Magento самостоятельно восстанавливает этот файл?

 2
Author: Aasim Goriya, 2013-04-12

2 answers

Это был сериализованный массив PHP, который был флагом для включения возможности кэширования в приложении. Это включает в себя блок, макет, перевод, конфигурацию, прослушивание и многое другое. Это было прекращено через некоторое время после 1.2 или около того в 1.4 alpha 3 - и поэтому я думаю, что у вас устаревшая установка Magento.

Метод, который находит файл на диске для записи/чтения, относится к классу Mage_Core_Model_App и помечен как устаревший:

/**
 * Get file name with cache configuration settings
 *
 * @deprecated after 1.4.0.0-alpha3, functionality implemented in Mage_Core_Model_Cache
 * @return string
 */
public function getUseCacheFilename()
{
    return $this->_config->getOptions()->getEtcDir().DS.'use_cache.ser';
}

Обычно это выглядело что-то вроде этого:

a:7:{s:6:"config";i:0;s:6:"layout";i:0;s:10:"block_html";i:0;s:9:"translate";i:0;s:11:"collections";i:0;s:3:"eav";i:0;s:10:"config_api";i:0;}

Который, будучи несериализованным, может быть визуализирован в виде массива PHP, например:

Array
(
    [config] => 0
    [layout] => 0
    [block_html] => 0
    [translate] => 0
    [collections] => 0
    [eav] => 0
    [config_api] => 0
)

Проблема с файлом такого типа заключается в том, что он должен быть доступен для записи сервером, и наличие его в приложении/etc/ может привести к потенциальным проблемам для вашего local.xml файл, позволяющий читать конфигурацию базы данных и ключи шифрования, если у вас неправильно настроены разрешения.

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

Дополнительная информация об устранении неполадок с use_cache.ser:

Http://www.magentocommerce.com/wiki/groups/227/cache_is_not_writable

Сериализация в PHP: http://php.net/manual/en/function.serialize.php

 7
Author: philwinkle, 2013-04-12 20:27:10

Для версий 1.4+ этот файл не должен существовать. Он устарел в версии 1.4.0.0-alpha3.
Для версий до 1.4 этот файл использовался для хранения состояния типов кэша (включено/отключено). В нем сохранено то, что вы видите в меню System->Cache Management.

 6
Author: Marius, 2013-04-12 19:56:17