PHP: amaçlandığı gibi apc_store çalışmıyor

1 Cevap php

Ben memcached bir tamamlayıcısı olarak, her web sunucusu üzerinde bazı özel verileri saklamak için APC denemeye başladı.

Ancak, aşağıdaki kod parçası bana baş ağrısı veriyor:

echo apc_store('key', 'value');
echo apc_store('key', 'newvalue');
echo apc_fetch('key'); 

// Echoes: value

Memcached örnek:

$memcached = new Memcached;

$memcached->addServer('localhost', '11211');

$memcached->set('key', 'value1');
echo $memcached->get('key') . '<br />'; // Echoes value1

$memcached->set('key', 'value2');
echo $memcached->get('key'). '<br />'; // Echoes value2

$memcached->set('key', 'value3');
echo $memcached->get('key'). '<br />'; // Echoes value3

Neden apc_store gibi düzgün çalışmıyor?

EDIT: To make sure that no one else is spending two hours on looking for a solution, when this is caused by a bug, here's one: http://pecl.php.net/bugs/bug.php?id=16894&edit=1 (not the most effective, though)

1 Cevap

Bu bilinen bir sorun gibi görünüyor: PECL Bug #16814 New warning "Potential cache slam averted for key"

Sadece bir apc_store() istek başına izin görünür. Ben bu testi denedim:

<?php

echo "<p>apc_fetch(key): " . apc_fetch('key') . "</p>\n";
// echo "<p>apc_store(value): " . apc_store('key', 'value') . "</p>\n";
echo "<p>apc_store(newvalue): " . apc_store('key', 'newvalue') . "</p>\n";
echo "<p>apc_fetch(key): " . apc_fetch('key') . "</p>\n";

Bu ile oynayın, ikinci satırı un-comment ve bir önceki isteği üzerine önemli bir kümenin üzerine yaptığı görmek, ama sadece istek başına bir kere belirli bir tuşa saklayabilirsiniz.

Hata günlüğü ayarlandığında Off bu tek-yazma davranışını devre dışı olabilecek bir ini dosyası ayarı apc.slam_defense bahseder. Ama ben kısaca denedim ve ben bu işleri teyit olamazdı. Belki de daha fazla şans (php.ini değiştirmek zaman Apache yeniden hatırlamak) gerekir.