0

APCで少し奇妙な問題が発生しました。私たちのコードでは、jsonから数百の大きな配列を逆シリアル化する必要があり、この操作は非常にコストがかかります。ここで、配列を逆シリアル化してAPCに格納しようとしましたが、apc_fetch()は次の要求でfalseを返します。

$items = $entity->getItems();  // JSON-String

$cacheKey = __FUNCTION__ . '_itemcache_' . $entity->getId() . '_' . md5($items);
$cacheItems = apc_fetch($cacheKey);

if(false === $cacheItems) {
    $cacheItems = json_decode($items, true);
    apc_store($cacheKey, $cacheItems, 3600);
}

// ...

apc.phpにキャッシュされたすべてのアイテムを表示でき、同じserver-configを使用して他のアプリケーションからそれらをフェッチすることもできます。何が間違っている可能性がありますか?このスニペットはsymfony-projectから取得したものですが、他のapcコードが使用されていないことがどこまでわかるかわかります。

何か案は?私はすでにこことグーグルで検索しました、しかし私は何も役に立ちませんでした。

4

1 に答える 1

0

次のようなパラメーターを確認する必要があります。

apc.max_file_size = 512M

そして他にはほとんどありません。また、APC は単一の大きな変数を処理するようには作られていないことに注意してください。ビッグデータの場合、最善の策はデータベースを使用することです。

于 2012-10-16T15:05:09.063 に答える