[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Периодическое задвоение запросов к сайту
SpiritUNQ
Есть сайт (простенькая онлайн игра, ~20 человек онлайн), php5, mysql5... всё как обычно). Работает уже около трёх лет и с начала вроде всё нормально было, но по прошествии некоторого времени, может год - полтора, стала появлятся проблемма:
при переходе на страницу она как буд-то два раза открывается, то есть как буд-то пользователь переходит на страницу и затем обновляет. К примеру сообщение на форуме оставляет, а оно два раза добавляется.
Сначала это происходило редко, не обращали внимания, потом как-то народу поприбавилось, база разрослась и стали чаще замечать, думали может из за перегрузок сервера глюки какие. А в последнее время говорили что даже по 3 - 4 обращения бывало, причём в браузере-то одна страница открывается, никто её не обновляет.
Сейчас уже на новом хостинге сидим, но всё равно каждое двадцатое открытие страницы дублирует результат, причём как-то наплывами.
Никаких серьёзных изменений не вносили, код смотрел, нормально вроде всё. Пытался одну страницу переписывать по новой, всё равно проявляется.
Может кто сталкивался или хотя бы подскажет куда посмотреть, какую проверку добавить или олги какие включить чтоб хотяб понять из-за чего может быть.
p.s. Хостинг линуксовый.



Спустя 1 час, 22 минуты, 58 секунд (4.11.2010 - 12:42) SlavaFr написал(а):
дело скорей всего не в хостинге а в Browser. Некоторые бровзеры посылают реквест при изменении размера или плугины могут повлиять на многократный запрос.
При простом просмотре страниц это в общем не особо страшно, но проблемы возникают если например ктото отослал нескокько раз формуляр.
Чтоб избежать многократного отсылания формуляра можно например при приеме данных из формулара написать в $_SESSION время последнего отсылания и если придыдущий запрос был зделан менее чем 5 секунд тому назад, то не делать изменений.

принцип

session_start();
.......

if(isset($_SESSION['last_send']) && ($_SESSION['last_send']+5)>time()){
//не делаем не каких изменений
}else{
$_SESSION['last_send']=time();
//вносим изменения
}

Спустя 2 часа, 46 минут, 22 секунды (4.11.2010 - 15:28) SpiritUNQ написал(а):
SlavaFr, проблемма ещё в том что есть ряд страниц которые позволяют выполнять какое-то действие через определённый промежуток. например, когда пользователь кликает по ссылке, ему возвращается результат обработки, а если он пытается кликнуть второй раз - ему сообщается что он уже сделал это и через какое время он может повторить.
То есть это конечно не позволит добавить напимер второе сообщение на форуме, но на описсанной странице пользователю будет так же выдаваться при первом клике что он уже сделал второй.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.