let online = 0,
ipsConnected = {}; //список подключенных ip
io.on('connection', async (socket) => {
let address;
if (socket.handshake.headers['x-forwarded-for'] !== undefined) {
address = socket.handshake.headers['x-forwarded-for'];
} else {
address = socket.handshake.headers["x-real-ip"];
}
if (!ipsConnected.hasOwnProperty(address)) {
ipsConnected[address] = 1;
online++;
} else {
ipsConnected[address] += 1;
}
socket.on('disconnect', () => {
ipsConnected[address] -= 1;
if (ipsConnected[address] <= 0) {
delete ipsConnected[address];
online--;
}
});
});
p.s я новичок в phpОбщие принципы которые здесь нарушены относятся к любому языку, не только к пхп.
function setRandomInterval(cb, minDelay, maxDelay, ...args) {
let timeoutID;
(function next() {
const delay = Math.floor(Math.random() * (maxDelay - minDelay) + minDelay);
timeoutID = setTimeout(() => {
cb(...args);
next();
}, delay);
})();
return function cancel() {
clearTimeout(timeoutID);
};
}
// использование:
setRandomInterval(func, 500, 2500); // просто запускаем с интервалом от 0.5с до 2.5с
const cancelInteraval = setRandomInterval(() => {
console.log('it work');
if(Math.random() > 0.7) {
cancelInteraval(); // таймаут можно отменить если вызвать возвращенную функцию
}
}, 200, 500);
setRandomInterval((arg1, arg2, arg3) => {
console.log(arg1, arg2, arg3);
}, 1000, 3000, 'arg1', 'arg2', 'arg3'); // подобно setTimeout и setInterval можно передать аргументы в колбэк
вопрос не сложный, а мутный
как ведет себя следующее число по отношению в текущему: возрастает или убываету вас априори N-1 ответов (999 999) .. а график... что то мне подсказывает, что это график производной (для построения не обязательно иметь аналитическую форму, прогона по сырым данным более чем достаточно) .. и дальше в том же духе
-в каком диапазоне значений больше чиселназывается гистограмма .. а значит ответ легко гуглится
-из какого в какой диапазон чаще всего переходят числа (напр: из 0-100к в 400к-500к и тд.)решаемо за один проход, равно как и самый первый пункт..