我使用memcache在php中使用此代码:
<?php
$memcache = new Memcache;
$memcache->connect('localhost', 11211) or die ("Could not connect");
$version = $memcache->getVersion();
echo "Server's version: ".$version."<br/>\n";
$tmp_object = new stdClass;
$tmp_object->str_attr = 'test';
$tmp_object->int_attr = 123;
$memcache->set('key', $tmp_object, false, 1) or die ("Failed to save data at t\
he server");
echo "Store data in the cache (data will expire in 1 second)<br/>\n";
$i=0;
do{
$get_result = $memcache->get('key');
echo "Data from the cache:<br/>\n";
var_dump($get_result);
$i++;
}while($get_result);
echo $i;
var_dump($get_result);
$ i的价值每次都不同。有时它是140,有时它是900+等等......为什么它会改变?
编辑 - 顺便说一下,这是一个来自php网站memcached的示例程序,只有很小的改动。
修改
我想我对问题不够清楚:
我想问一下,为什么$memcache->get('key')
执行在某些情况下需要更多的CPU时间,而在其他情况下需要更少的CPU时间。
=&GT;更多循环意味着$memcache->get('key')
恰好花费更少的时间,更少的循环意味着花费更多的CPU时间
请记住,缓存设置为在1秒内过期,do - while
执行直到它过期。
答案 0 :(得分:1)
你的循环一直在运行并且一遍又一遍地读取相同的密钥,直到从memcache中删除它。
该键的过期时间设置为1秒,因此循环运行的次数是1秒内可以读取值的次数。到期时间只是一个指示。它不一定必须精确到1毫秒到毫秒。你的脚本的速度也取决于其他各种条件,所以这个计数器不是很可靠。
答案 1 :(得分:-2)
$ i在循环外部打印,只要你的while循环条件变为真。$ i将得到增量,所以你会得到不同的结果。