Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Как правильно чистить memcache / 3 сообщений из 3, страница 1 из 1
03.10.2012, 19:12:46
    #37982581
Glad_r
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно чистить memcache
Всем доброго времени суток.
Подскажите, как же правильно сделать.
Суть проблемы - имеем графики статистики. Эти графики одновременно смотрят несколько человек, поэтому один админ написал скрипт, чтобы кешировать данные, хотя их там с гулькин нос. Мне же надо отображать реальные данные.
Сейчас получается, что данные постоянно закешированы. Подскажите и поправьте, что не так
Данные хранятся в заббиксе и мы их туда тянем
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
<?php
require_once('ZabbixAPI.class.php');
/* Configuration */
$item1 = array (
    'fms.incoming.traffic' => array (
        'description' =>'Incoming traffic',
        'id' => 39527,
        'cacheTime' => 5,
$item = 'incoming.traffic';
$zurl = 'http://zabbix.com/api_jsonrpc.php';
$zuser = 'юзер';
$zpassword = 'пароль';

/* main program */
$memcache = new Memcache;
$zapi = new ZabbixAPI($zurl);

$memcache->connect('localhost', 11211);
$auth = $memcache->get('zapi.auth');
if ($auth) {
    $zapi->setAuthHash($auth);
    echo "Get auth hash from memcache\n";
} else {
    $zapi->login($zuser, $zpassword) or die('Could not login');
    $memcache->set('zapi.auth', $zapi->getAuthHash());
    echo "Put auth hash into memcache\n";
}

$value = $memcache->get('zapi.' . $item);
if($value) {
    $cached = true;
} else {
    $cached = false;
    $response = $zapi->query('item.get', array('output' => 'extend', 'itemids' => array(39527)));
    if(array_key_exists('result', $response)) {
        $value = $response['result'][0]['lastvalue'];
        $memcache->set('zapi.' . $item, $response['result'][0]['lastvalue'], 0, $item1[$item]['cacheTime']);
    } else {
        $memcache->delete('zapi.auth');
        die('Query error');
    }
$mes.='<input type="text" id="IncTraf" value="'.$value.'" />';
	echo($mes);


В результате мы авторизовались, взяли данные и закешировали их, потом же много времени мы получаем закешированные данные, а надо хранить их в кеше ну 10-20 секунд, после чего очищать кеш.

Подскажите как правильно это сделать.
Пробовал $memcache->delete('zapi.' . $item,5); но тогда получаем ноль, вместо того, чтобы сходить и получить данные.

Заранее спаибо
...
Рейтинг: 0 / 0
03.10.2012, 20:52:18
    #37982652
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно чистить memcache
при добавлении данных в мемкеш указывайте параметр, который отвечает за время хранения данных (expires)
...
Рейтинг: 0 / 0
04.10.2012, 17:58:30
    #37984266
Glad_r
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно чистить memcache
Hettпри добавлении данных в мемкеш указывайте параметр, который отвечает за время хранения данных (expires)
Согласно описанию функции
bool Memcache::set ( string $key , mixed $var [, int $flag [, int $expire ]] )
пишем всё правильно
$memcache->set('zapi.' . $item, $response['result'][0]['lastvalue'], 0, $item1[$item]['cacheTime']);
cacheTime определено выше и равно 5 секундам, но вот данные по истечению 10 секунд как были закешированы, так и остались. Как говорил С.Безруков - Или я дурак, или лыжи не едут.
Что не так-то?
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Как правильно чистить memcache / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]