Бот перестает работать после ошибки:
FetchError: request to https://domain.ru/api/get/token failed, reason: connect ETIMEDOUT ip:443
at ClientRequest.<anonymous> (/home/user/bot/node_modules/node-fetch/lib/index.js:1461:11)
at ClientRequest.emit (events.js:315:20)
at TLSSocket.socketErrorListener (_http_client.js:426:9)
at TLSSocket.emit (events.js:315:20)
at emitErrorNT (internal/streams/destroy.js:92:8)
at emitErrorAndCloseNT (internal/streams/destroy.js:60:3)
at processTicksAndRejections (internal/process/task_queues.js:84:21) {
type: 'system',
errno: 'ETIMEDOUT',
code: 'ETIMEDOUT'
}
NodeJS
async function getToken(ctx) {
let message = '';
await loadData(`api/get/token`, { tg_id: ctx.from.id })
.then((res) => {
if (typeof res === 'object') {
if (res.message === null) {
ctx.replyWithMarkdown('*Message*');
} else {
res.error.code === 0 ? (message = `*${res.message}*`) : (message = res.message);
ctx.replyWithMarkdown(message);
}
}
})
.catch((error) => {
console.log(error);
});
}
PHP
$query = $db::sendQuery("SELECT `user_id` FROM `users_tg` WHERE `tg_id` = ?",array($tg_id));
if($query->rowCount() == 1){
$user_id = $query->fetchObject()->user_id;
$token= $db->fetchObj("SELECT `token` FROM `tokens` WHERE `user_id` = $user_id")->token;
return setStatus(0,$token); // echo json_encode(['code' => 0, 'message' = 'текст']);
} else {
return setStatus(410,'Вы ещё не привязали аккаунт telegram');
}
По началу все работает успешно через некоторое время падает. Не понимаю в чем проблема. Иногда бот отлагивает, но не надолго и так всегда.
Ошибка ETIMEDOUT
вам говорит о том, что ответ не был получен в пределах заданного времени.
Если изначально всё работает нормально, то могу предположить, что в какой-то момент сервер перестаёт справляться с нагрузкой и отдаёт ответ слишком долго, как следствие бот падает, нагрузка тоже и всё начинается заного.
Нужно, внезапно, посмотреть что вызывает большую нагрузку и постараться устранить это. Так же есть смысл проверить есть ли индексы на столбцах по которым идёт выборка и нет ли каких-то других банальных ошибок
Выставляем время ожидания ответа больше и ждём до тех пор пока сервер не ответит. Но есть шанс, что в таком случае, уже php сторона будет отваливаться с 50Х ошибкой из-за превышения времени выполнения.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Подскажите, пожалуйста, как сгруппировать одинаковые товары в корзине? Необходимо сделать так, чтобы одинаковый товар (c тем же id) при добавлении...
выскакивает ошибка
Есть страничка постов с табами для каждой категории, выглядит это так: