powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Как правильно чистить memcache
3 сообщений из 3, страница 1 из 1
Как правильно чистить memcache
    #37982581
Glad_r
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем доброго времени суток.
Подскажите, как же правильно сделать.
Суть проблемы - имеем графики статистики. Эти графики одновременно смотрят несколько человек, поэтому один админ написал скрипт, чтобы кешировать данные, хотя их там с гулькин нос. Мне же надо отображать реальные данные.
Сейчас получается, что данные постоянно закешированы. Подскажите и поправьте, что не так
Данные хранятся в заббиксе и мы их туда тянем
Код: 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
Как правильно чистить memcache
    #37982652
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
при добавлении данных в мемкеш указывайте параметр, который отвечает за время хранения данных (expires)
...
Рейтинг: 0 / 0
Как правильно чистить memcache
    #37984266
Glad_r
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
3 сообщений из 3, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Как правильно чистить memcache
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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