Использование TTL равного 0 означает, что APC очистит весь кеш, когда ему не хватит памяти. Ошибка больше не появляется, но это снижает эффективность APC. Это не риск, не проблема: «Я не хочу делать свою работу». APC не предназначен для использования таким образом. Вы должны выбрать достаточно высокий TTL, чтобы срок действия наиболее часто используемых страниц не истек. Лучше всего выделить достаточно памяти, чтобы APC не нужно было очищать кеш.
Просто прочтите руководство, чтобы понять, как используется ttl: http://www.php.net/manual/en/apc.configuration.php#ini.apc.ttl
Решение - увеличить объем памяти, выделенной APC. Сделайте это, увеличив apc.shm_size.
Если APC скомпилирован для использования общей сегментной памяти, вы будете ограничены вашей операционной системой. Введите эту команду, чтобы увидеть предел вашей системы для каждого сегмента:
sysctl -a | grep -E "shmall|shmmax"
Чтобы выделить больше памяти, вам нужно увеличить количество сегментов с помощью параметра apc.shm_segments.
Если APC использует память mmap, у вас нет ограничений. Объем памяти по-прежнему определяется той же опцией apc.shm_size.
Если на сервере недостаточно памяти, используйте опцию фильтров, чтобы предотвратить кеширование файлов PHP, к которым реже используются.
Но никогда не используйте значение TTL равное 0.
Как сказал c33s, используйте apc.php для проверки вашей конфигурации. Скопируйте файл из пакета apc в веб-папку и укажите его в браузере. Вы увидите, что на самом деле выделено и как оно используется. Графики должны оставаться стабильными в нерабочее время, если они полностью меняются при каждом обновлении, это означает, что ваша настройка неверна (APC все стирает). Выделите на 20% больше оперативной памяти, чем действительно используется APC в качестве запаса прочности, и регулярно проверяйте ее.
По умолчанию разрешено только 32 МБ - это смехотворно мало. PHP был разработан, когда серверы имели размер 64 МБ, и большинство скриптов использовали один файл php на страницу. В настоящее время для таких решений, как Magento, требуется более 10k файлов (~ 60 МБ в APC). Вы должны выделить достаточно памяти, чтобы большинство файлов php всегда кэшировалось. Это не пустая трата времени, гораздо эффективнее хранить код операции в оперативной памяти, чем иметь соответствующий необработанный php в файловом кеше. В настоящее время мы можем найти выделенные серверы с 24 ГБ памяти всего за 80 долларов в месяц, так что не стесняйтесь предоставить APC несколько ГБ. Я поставил 2 ГБ из 24 ГБ на сервер, на котором размещены магазины 5Magento и ~ 40 веб-сайтов WordPress, APC использует 1,2 ГБ. Считайте 64 МБ для установки Magento, 40 МБ для Wordpress с некоторыми плагинами.
Также, если у вас есть веб-сайты для разработки на одном сервере. Исключить их из кеша.