почему цикл не выполняется "определенное" количество раз? - PullRequest
0 голосов
/ 11 февраля 2011

У меня есть этот код в php с использованием memcache:

<?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+ и т. Д. Почемуэто изменить?

edit - кстати, это пример программы для memcached с сайта php с небольшими изменениями.

edit
Полагаю, я не совсем понял вопрос:
Я хотел спросить, почему выполнение $memcache->get('key') в некоторых случаях занимает больше временив других случаях это занимает меньше времени процессора.
=> больше циклов означает, что $memcache->get('key') оказалось меньше времени, меньше циклов означает, что больше времени процессора.
Имейте в виду, что срок действия кэша истекает в течение 1 секундыи do - while выполняется до истечения срока действия.

Ответы [ 2 ]

1 голос
/ 11 февраля 2011

Ваш цикл продолжает работать и снова и снова читает один и тот же ключ, пока он не будет удален из memcache.

Время истечения для этого ключа установлено равным 1 секунде, поэтому число циклов выполняется столько раз, сколько значение может быть прочитано за 1 секунду. Время истечения просто индикация. Это не обязательно должно быть 1 секунда с точностью до миллисекунды. Скорость вашего скрипта также может зависеть от других условий, поэтому этот счетчик не очень надежен.

0 голосов
/ 11 февраля 2011

$ i выводится за пределы цикла, так что, пока условие цикла do while становится истинным. $ I будет получать приращение, поэтому вы получите другой результат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...