web-dev-qa-db-ja.com

PHP APCの潜在的なキャッシュスラムがキーに対して回避されました

apc_store()を使用しようとすると、このエラーが発生します。私はそれをグーグルで検索し、これがAPC時限爆弾のバグであることを確認し、php.iniにapc.slam_defense = Off;を追加することを提案するいくつかの修正を確認しました。

プログラミングエラーが原因でこれが発生したかどうか、発生した場合は修正方法を知る必要があります。

これはコードセグメントです:

if ($data = apc_fetch("foo")) {
    $an_array = $data;
} else {
    /* couple of lines */

    apc_store("circles", $an_array); // This is where I get the error
}

このスクリプトは、デプロイされたシステムで頻繁に呼び出されます。

十分な情報を提供できたと思います

前もって感謝します

25
shyam

APC 3.1.3以降、バグがあるようです( http://pecl.php.net/bugs/bug.php?id=16814 )、スラム防御がオンになると警告が表示されますすでに存在するキーを書き込もうとしたとき。
まだ修正されていないようです。

15
Serty Oan

設定apc.write_lock = 1およびapc.slam_defense = 0 in php.ini問題を修正する必要があります。

28
rynop

APCの最新バージョンは問題を解決しているようです。PECLでAPCを更新できます

pecl upgrade apc
5
Sidhannowe

これらの手順は、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
2
Layke