@newaitix

Лог частоты запросов к серверу?

380639999999 11.111.1.1 29.06.2018 12:40:44
380639999999 11.111.1.1 29.06.2018 12:40:57
380639999999 11.111.1.1 29.06.2018 12:40:58
380639999999 11.111.1.1 29.06.2018 12:55:31
380639999999 11.111.1.1 29.06.2018 12:55:43
380639999999 11.111.1.1 29.06.2018 12:56:25
380639999999 11.111.1.1 29.06.2018 13:01:24
380639999999 11.111.1.1 29.06.2018 13:02:13
380639999999 11.111.1.1 29.06.2018 13:02:40
380639999999 11.111.1.1 29.06.2018 13:02:42
380639999999 11.111.1.1 29.06.2018 13:03:07
380639999999 11.111.1.1 29.06.2018 13:03:10
380639999999 11.111.1.1 29.06.2018 13:03:12
380639999999 11.111.1.1 29.06.2018 13:03:14
380639999999 11.111.1.1 29.06.2018 13:03:37
380639999999 11.111.1.1 29.06.2018 13:03:45
380639999999 11.111.1.1 29.06.2018 13:03:53
380639999999 11.111.1.1 29.06.2018 13:03:59
380639999999 11.111.1.1 29.06.2018 13:08:09
380639999999 11.111.1.1 29.06.2018 13:08:12
380639999999 11.111.1.1 29.06.2018 13:10:02
380639999999 11.111.1.1 29.06.2018 13:10:04
380639999999 11.111.1.1 29.06.2018 13:10:44
380639999999 11.111.1.1 29.06.2018 13:22:03
380639999999 11.111.1.1 29.06.2018 13:22:17

Есть лог файл [номер телефона, ip, дата, время]
мне нужно вернуть лож в случае если:
было найдено более 2-х строк с разницей времени меньше 30 минут и с одинаковым ip
было найдено более 2-х строк с разницей времени меньше 30 минут и с одинаковым номером телефона
Как это лучше всего сделать чтоб не накручивать кучу циклов

$res=Response::fileget($log_file_path,array('n'=>$nn,'i'=>$ip));
// возвращает мне массив $array=array('i'=>array(),'n'=>array()); где i это строки в которых найден ip пользователя, n - строки в которых найден номер телефона полученный в query string
if($res){
	$asdasd=json_encode($res);
	if(count($asdasd['i'])>0){
		for($i=0;$i<count($asdasd['i']);$i++){
			$line_explode=explode(' ',$asdasd['i'][$i]);

		} 	
	}
	

	if(count($asdasd['n'])>0){
		for($i=0;$i<count($asdasd['n']);$i++){
			$line_explode=explode(' ',$asdasd['n'][$i]);

		}
	}
}
  • Вопрос задан
  • 72 просмотра
Пригласить эксперта
Ответы на вопрос 2
rim89
@rim89
программист-велосипедист
saintbyte
@saintbyte
Django developer
Да надо как можно сложнее, на баше пишется за 2 минуты
вот пример:
cat log.log | awk '{ print $1}' | sort | uniq -c | sort -n && truncate -s0 log.log
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы