Я получаю эту ошибку при попытке использовать apc_store()
. Я просмотрел его и увидел, что это ошибка APC timebomb и увидели некоторые исправления, которые предполагали добавить apc.slam_defense = Off;
на php.ini.
Мне нужно знать, произошло ли это из-за ошибки программирования, и если да, то как это исправить.
Это сегмент кода:
if ($data = apc_fetch("foo")) { $an_array = $data; } else { /* couple of lines */ apc_store("circles", $an_array); // This is where I get the error }
Этот скрипт будет часто вызываться в моей развернутой системе.
Надеюсь, я предоставил достаточно информации
заранее спасибо
Начиная с APC 3.1.3, кажется, что есть ошибка ( http://pecl.php.net/bugs/bug.php?id=16814 ), предупреждение производится, когда защита от шлема включена, и когда вы пытаетесь написать ключ, который уже существует.
Кажется, пока не исправлено.
Установка apc.write_lock = 1
и apc.slam_defense = 0
в php.ini
должна устранить проблему.
Последние версии APC, похоже, решают проблему, вы можете обновить APC с помощью PECL
pecl upgrade apc
Эти инструкции будут отличаться в зависимости от того, как установлен PHP.
Но в файле /etc/php5/cgi/conf.d/extensions.ini
(или apc.ini
или php.ini
) после того, как вы добавили extension=apc.so
вы можете отключить защиту от шлема
Например, это моя конфигурация, которую я использую.
[apc] apc.enabled=1 apc.shm_size=48M apc.num_files_hint=10000 apc.user_entries_hint=10000 apc.max_file_size=5M apc.stat=1 apc.enable_cli=On apc.write_lock = 1 apc.slam_defense = 0 # <----- This is the Important Setting