Подтвердить что ты не робот

Потенциальный кэш кэша PHP APC для ключа

Я получаю эту ошибку при попытке использовать 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
}

Этот script будет часто вызываться в моей развернутой системе.

Надеюсь, я предоставил достаточно информации

Заранее спасибо

4b9b3361

Ответ 1

Начиная с APC 3.1.3, кажется, что есть ошибка (http://pecl.php.net/bugs/bug.php?id=16814), предупреждение происходит, когда защита от шлема включена и когда вы пытаетесь написать ключ, который уже существует.
Кажется, он еще не исправлен.

Ответ 2

Настройка apc.write_lock = 1 и apc.slam_defense = 0 в php.ini должна устранить проблему.

Ответ 3

Последние версии APC, похоже, решают проблему, вы можете обновить APC с помощью PECL

pecl upgrade apc

Ответ 4

Эти инструкции будут отличаться в зависимости от того, как установлен 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