Использование 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. 0. 1022 *
Как сказал c33s, используйте apc.php для проверки вашей конфигурации. Скопируйте файл из пакета apc в веб-папку и укажите на него браузер. Вы увидите, что действительно выделено и как оно используется. Графики должны оставаться стабильными по прошествии нескольких часов, если они полностью меняются при каждом обновлении, то это означает, что ваша установка неверна (APC сбрасывает все). Выделите на 20% больше оперативной памяти, чем тот, который APC действительно использует в качестве запаса безопасности, и регулярно проверяйте его.
Значение по умолчанию, позволяющее только 32 МБ, невероятно низкое. PHP был разработан, когда серверы были 64 МБ, и большинство сценариев использовали один файл php на страницу. В настоящее время такие решения, как Magento, требуют более 10 000 файлов (~ 60 МБ в APC). Вы должны выделить достаточно памяти, чтобы большинство файлов php всегда кэшировалось. Это не пустая трата времени, более эффективно хранить код операции в оперативной памяти, а не иметь соответствующий сырой php в файловом кеше.
В настоящее время мы можем найти выделенные серверы с 24 ГБ памяти всего за 80 долларов в месяц, поэтому не стесняйтесь разрешить использование нескольких ГБ для APC. Я поместил 2 ГБ из 24 ГБ на сервер, на котором размещены магазины 5Magento, и ~ 40 сайтов WordPress, APC использует 1,2 ГБ. 64 МБ для установки Magento, 40 МБ для Wordpress с некоторыми плагинами.
Кроме того, если у вас есть веб-сайты для разработки на одном сервере. Исключить их из кэша.