Защита - что эффективнее?

b00

Новичок
Защита - что эффективнее?

Дано: сайт хостится на низкотарифном плане, ввиду чего под него выделено мало ресурсов (памяти).

Проблема: иногда попадаются юзера/роботы, которые посылают множество мультипоточных запросов,
из-за чего память быстро переполняется (скорее всего из-за большого количества mysql коннектов).

Задача: требуется отслеживать таких клиентов и прописывать их адрес в .htaccess как deny

Решение: я знаю 2 способа:

1) Из config.php вызывать скрипт, который будет insert-ить в iptrack таблицу адрес и время захода,
одновременно удаляя из этой таблицы записи, у которых время захода стало больше, скажем 10 сек,
и делаем count(*) from iptrack where ip=текущий адрес.
Если count(*) > 10, значит имеем дело с многопоточным юзером и заносим его адрес в .htaccess

2) Не использовать mysql, a записывать заходы в виде файлов. Код предстваляет собой, что то вроде такого:
PHP:
define("MAX_IDLE_TIME", 10); 
$abusecount = 0;
if ($chk_dir = opendir( $dir_handle ))
{
        while (($file = readdir($chk_dir)) !== false) 
		 {
            if($file != '.' && $file != '..')
			  {
			    if(time()- fileatime($dir_handle . '/' . $file) > MAX_IDLE_TIME) 
				  {
				    unlink($dir_handle . '/'. $file);
				  }
				if (substr($file,0,strlen($ip_addr)) == $ip_addr)
				  {
				    $abusecount++;
				  }
			  }
         }
        closedir($chk_dir);
}	 
if ($abusecount > 10)
{ 
 // Баним юзера
}
touch($dir_handle . '/' . $ip_addr . '-' .time());
Вопрос: Сейчас используется 1) метод, однако хочется уменьшить количество SQL запросов, поэтому привлекает метод 2)
Но не будет ли он тормозить работу сайта, перебирая эти файлы? (обычно не более 15 online users на сайте).
Может метод 2) вообще нельзя использовать для таких вещей?
 
Сверху