我使用了以下组合::
OS -> CentOS
php -> 5.4
Memcached Server -> 1.4
Memcached -> 2.1 [ client library for php ]
libmemcached -> 1.0.16
和下面的代码
<?php
class mem{
public $mem = null;
public static $x = 0;
public function __construct()
{
$this->mem = new Memcached();
$this->mem->addServer("localhost",11211);
$op = $this->mem->add("key_".self::$x, "test");
}
public function __destruct()
{
$op = $this->mem->delete("key_".self::$x);
$this->mem = null;
self::$x++;
}
}
for($i=0;$i<100000;$i++){
$v = new mem();
}
?>
当这个 php 脚本完成后,我发现有 5-10 个键没有被删除。
现在当我改变
libmemcached to 0.48
memcached to 2.0
每个键都被删除
我重复了这些步骤,发现这个问题很容易重现。
现在我在不同的机器和一个通用的内存缓存服务器上进行了这两个设置。同样,新设置中的几个键没有被删除。此外,通过增加脚本的并发性,键的数量非线性增加。
我无法理解这有什么问题。它是一个错误吗?
请帮忙!