Имеется код который с каким-то промежутком вызывается по CRON
Он запрашивает 20 последний записей из группы в VK.COM и проверяем каждую на наличие ключевых слов, если они есть то он например отсылает оповещение, а для того чтобы не присылать оповещения снова, в Memcache ставится ключ на 7 суток который проверяется при каждом переборе.
var Memcached = require('memcached');
var memcached = new Memcached('127.0.0.1:11211');
var request = require('request');
var sync_request = require('sync-request');
...
//Формируем УРЛ для запроса записей с стены VK.COM
var wall_url = url('wall.get', 'domain=******&count=20');
//Делаем запрос
request(wall_url, function (error, response, body) {
if(error){console.log('Error:', error);}
//Декодим JSON
var json_body = JSON.parse(body).response.items;
//Перебираем в цикле каждую запись
for (var key in json_body) {
//Получаем из объекта запись по Key
var obj_ = json_body[key];
//Проверяем реклама ли она, является ли репостом и подписана ли она юзером
if(!obj_.copy_history && !obj_.marked_as_ads && obj_.signer_id){
//Делаем Trim текста
var text = obj_.text.trim();
//Ижем ключевые слова в тексте
if(check(text)){
var wall_id = obj_.id;
//Проверяем мемкеш на наличие ключа, если есть то не делаем ничего
memcached.get('w'+wall_id, function (err, data) {
if(typeof data === 'undefined'){
.....Если мемкеш чист то выполняем что либо.....
//Помечаем в мемкеше запись "Прочитаной" на 7 дней
memcached.set('w'+wall_id, true, 604800, function (err) {});
}
});
}
}
}
});
Код выше полностью работает но стоит только убрать var wall_id = obj_.id;
и изменить его часть так:
//Проверяем мемкеш на наличие ключа, если есть то не делаем ничего
memcached.get('w'+obj_.id, function (err, data) {
if(typeof data === 'undefined'){
.....Если мемкеш чист то выполняем что либо.....
//Помечаем в мемкеше запись "Прочитаной" на 7 дней
memcached.set('w'+obj_.id, true, 604800, function (err) {});
}
});
Он сразу начинает работать некорректно, в Memcache создается ключ но при этом проверка на наличие ключа не срабатывает и оно заново проверяет запись, и это не удивительно ведь obj_.id
перед memcached.get имеет ID не тот который в этой переменной уже после него
Например до 156236
После: 156206
156236 - запись которая была найдена
156206 - является последней перебираемой записью в цикле
Задача такая, пишу скрипт для сайта по сбору баллов, на котором по клику открывается pop-up окно с ютуб видеоМне надо как-то отследить его открытие...
Этот скрипт срабатывает один разПри клике кнопка блокируется