cresis
Писатель
- Регистрация
- 15 Сен 2011
- Сообщения
- 9
- Реакции
- 4
Привет, неожиданная находка, как раз искал вариант раскодироватьПопробуй заменить index
Это от последней версии? Этот index правда не работает, но похоже на правду.
Было бы здорово его конечно пофиксить и заодно вырезать стучалки.
Привет! Я посмотрел твой кейс и думаю, что на самом деле проблем не в том, что запрос не перестает отправляться при выходе из системы, а потому что выхода из системы не происходит.Заметил что скрипт /templates/js/chat.js создает нагрузку на сервер каждые 2 секунды отправляя POST запрос на systems/ajax/chat.php
При этом запросы идут если открыта любая страница сайта где есть скрипт /js/chat.js (тоесть везде) даже в том случае если пользователь не залогине в системе.
Буквально 2-3 клиента оставившие после выхода из системы открытое окно браузера создают этими запросами довольно большю нагрузку.
Насколько я понимаю это делается с целью обновления чата. Но после выхода из системы смысла в этом уже нет.
Подскажите пожалуйста, есть ли возможность как то стопорнуть эти запросы после выхода из системы?
з.ы. на скринах лог сервера с этим запросом даже от заблокированного уже айпи адреса.
Попробовал перенаправить после логаута пользовтеля на страницу без чата, в этом случае скрипт показывает ошибку в консоли с такой же частотой в 2 секунды.
Я заметил такое поведение во время тестирования, и оказалось, что при выходе из аккаунта, аккаунт-меню пропадает, но если перезагрузить страницу, как такого-го выхода не произошло, потому что есть условие на строке /systems/classes/Profile.php:94
PHP:
if(intval($_SESSION['profile']['id'])){
$get = findOne("uni_clients", "clients_id=?", [$_SESSION['profile']['id']]);
}elseif($_COOKIE["tokenAuth"]){
$get = findOne("uni_clients", "clients_cookie_token=?", [clear($_COOKIE["tokenAuth"])]);
}
Где в elseif забирается авторизационный токен из кукисов. Таким образом, выходя из аккаунта, ты обратно авторизуешься, потому что у тебя есть авторизационный токен.
Думаю тут не совсем продумана логика, и ошибочный код. Может конечно что-то ломается где-то в момент logout, но я еще не смотрел и временным решением закоментил elseif часть.
PS. если что, выглядеть должно так:
PHP:
if(intval($_SESSION['profile']['id'])){
$get = findOne("uni_clients", "clients_id=?", [$_SESSION['profile']['id']]);
}
// elseif($_COOKIE["tokenAuth"]){
// $get = findOne("uni_clients", "clients_cookie_token=?", [clear($_COOKIE["tokenAuth"])]);
// }
Если уж полностью выйти из системы, то chat.js отдает {"auth":false} и глохнет, потому что statusUpdateCount принимает false.
Но вот только
JavaScript:
setInterval(function() {
updateCount();
}, 2000);
Я бы переписал логику запихнув вызов updateCount в саму функцию, если statusUpdateCount true;