Я пытаюсь опросить базу данных MySQL, итерируя каждые 2 секунды и получая все записи, созданные менее чем 2 секунды назад.Опрос MySQL DB в Socket IO & Node JS
Если я использую setInterval
, он, кажется, иногда пропускает запись. Если я использую setTimeout
, он выполняет только первую итерацию.
Как я могу получить данные более надежно, чтобы включить все данные?
io.on('connection', function(socket) {
authorize (socket, function(shop_id) {
setInterval(function() {
var sql = "SELECT * FROM `stats` WHERE `shop_id` = " + connection.escape(shop_id) +
" AND `created` > DATE_SUB(NOW(), INTERVAL 2 SECOND)";
var query = connection.query(sql, function(err, rows, fields) {
if (err == null) {
console.log (rows);
socket.emit('newData', rows);
}
});
}, 2000);
});
});
'toMySQLDate()' также необходимо использовать там, где обновляется 'lastCreated'. Это не позволит мне редактировать пример кода. Также опечатка в SQL '=' должна быть '+' –
Данные статистики не обязательно связаны с другими таблицами в базе данных. Какой будет лучший выбор хранилища данных для частых опросов в отношении масштабирования? –
RabbitMQ: https://github.com/squaremo/rabbit.js – apscience