Как бороться с недобросовестными юзерами, которые частым кликом по ссылке вызывают мнокократно скрипт для получения незапланированных действий, к примеру: PHP: $query = @mysql_query("select lastupdate from '$table' where id='$userid';"); $user = @mysql_fetch_array($query); $lastupdate = $user['lastupdate']; if ($lastupdate > (time()-3)) exit(); @mysql_query("update '$table' set money=money+1,lastupdate='".time()."' where id='$userid';") or die(); @mysql_query("update '$table2' set userid='$anotheruserid' where userid='$userid';") or die(); // Проверка if ($lastupdate > (time()-3) exit(); не дает ощутимых результатов, все равно несколько раз userid начисляет себе money++; и попутно вопрос про mysql_close(), ибо не нашел однозначного ответа. Обязательно этой функций завершать соединение с базой при завершении скрипта естественным путем и при завершении функцией exit()? Какие минусы и плюсы при неиспользовании mysql_close()? Заранее спасибо знатокам
mysql_close() закрывает текущее соединение с базой. например, если скрипт начинает стого, что выбирает огромную выборку, а затем преобразует ее в массив, и дальше парсит его, то имеет смысл закрыть соединение и удалить результат запроса из памяти..
я бы использовал сессии. PHP: $query=mysql_query($sql); while($result=mysql_fetch_assoc($query)) { ... } $query=null;
спасибо за совет, раньше лочил базы, но нагрузка на серв серьезно возрастала. с сессиями пожалуй получше будет...
1. поставить кеширующий nginx перед апачем. он реально снизит нагрузку на сервер прицентов на 30%. 2. поставить flooddetect. http://php.spb.ru/other/_dima_noflood.php я давно его использую. очень помогает.