Agran
Newbie | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Написал скрип на perl для подсчёта экономии на кешировани по логам Squida. Не совсем уверен в том что он правильно всё считает. Прошу посмотреть знающих. Код: #!/usr/bin/perl print "Content-type: text/html\n\n"; open(access_log, "<access.log"); flock(access_log, 1); $size = 0; $zaprosov_vsrgo = 0; $zaprosov_hit = 0; $hit_size = 0; while (<access_log>) { $zaprosov_vsrgo ++; ($log_date, $log_reqtime, $log_requester, $log_status, $log_size, $log_method, $log_url, $log_ident, $log_hierarchie, $log_content) = split; $size += $log_size; ($log_hitorfail)=(split(/\//,$log_status))[0]; if ($log_hitorfail =~ /^TCP\w+HIT/) { $zaprosov_hit++; $links{$log_url}++; if($log_size > $link_size{$log_url}) { $link_size{$log_url} = $log_size; } $hit_size += $link_size{$log_url}; } if ($log_hitorfail =~ /^UDP_HIT/) { $zaprosov_hit++; $hit_size += $log_size; } } close (access_log); print "Запросов всего: ".$zaprosov_vsrgo; print "<br>Запросов в кеш: ".$zaprosov_hit." (".sprintf("%.1f",($zaprosov_hit/$zaprosov_vsrgo)*100)."%)"; print "<br>Всего скаченно: ".&size_view($size); print "<br>Скаченно из кеша: ".&size_view($hit_size)." (".sprintf("%.1f",($hit_size/$size)*100)."%)"; print "<br><br>Популярные закешированные файлы: (файл, количество запросов в кеш, размер файла, скаченно этого файла из кеша)<br>\n"; @sorted_keys = (sort {($links{$b} * $link_size{$b}) <=> ($links{$a} * $link_size{$a})} keys %links); $i = 0; foreach(@sorted_keys){ $i ++; print "$_ $links{$_} ".&size_view($link_size{$_})." ".&size_view($links{$_} * $link_size{$_})."<br>\n"; if ($i > 50){last}; }; sub size_view { $sizebuf = $_[0]; if($sizebuf >= 1073741824) {return sprintf("%.1f GB",$sizebuf/1073741824)} elsif($sizebuf >= 1048576) {return sprintf("%.1f MB",$sizebuf/1048576)} else {return sprintf("%.1f KB",$sizebuf/1024)} } | Добавлено: Сам нашёл ошибку. Приведённый код сильно врёт. Если кому интересно - могу выложить исправленную версию, в которой добавил статистику экономии по дням. |