помогите "прочитать" лог апача httpd-access.log xxx.xxx.xxx.xxx - user [09/Apr/2008:14:14:26 +0700] "GET /козявки/2.jpg HTTP/1.1" 200 78226 xxx.xxx.xxx.xxx - user [09/Apr/2008:14:14:26 +0700] "GET /букашки/2.jpg HTTP/1.1" 200 78226 xxx.xxx.xxx.xxx - user [09/Apr/2008:14:14:26 +0700] "GET /козявки/2.jpg HTTP/1.1" 200 78226 xxx.xxx.xxx.xxx - user [09/Apr/2008:14:14:48 +0700] "GET /букашки/main.html HTTP/1.1" 401 401 xxx.xxx.xxx.xxx - user [09/Apr/2008:14:14:26 +0700] "GET /козявки/2.jpg HTTP/1.1" 200 78226 xxx.xxx.xxx.xxx - user [09/Apr/2008:14:14:26 +0700] "GET /букашки/2.jpg HTTP/1.1" 200 78226 xxx.xxx.xxx.xxx - user [09/Apr/2008:14:14:58 +0700] "GET /клопы/2.jpg HTTP/1.1" 206 61842 xxx.xxx.xxx.xxx - user [09/Apr/2008:14:14:26 +0700] "GET /козявки/2.jpg HTTP/1.1" 200 78226 xxx.xxx.xxx.xxx - user [09/Apr/2008:14:15:00 +0700] "GET /клопы/3.jpg HTTP/1.1" 206 66184 xxx.xxx.xxx.xxx - user [09/Apr/2008:14:14:26 +0700] "GET /клопы/2.jpg HTTP/1.1" 200 78226 xxx.xxx.xxx.xxx - user [09/Apr/2008:14:14:26 +0700] "GET /букашки/2.jpg HTTP/1.1" 200 78226 xxx.xxx.xxx.xxx - user [09/Apr/2008:14:14:26 +0700] "GET /клопы/2.jpg HTTP/1.1" 200 78226 надо выдернуть оттуда цифру объема полученного контента с проверкой кода 200 (кстати, че за код такой 206?) просуммировав ее для каждого конкретного места (козявки, букашки, клопы ), и отдать ее через в веб-морду в удобоваримой форме узеру. Как это реализовать? Думаю накарябать примитивный шел-скрипт (используя sed, awk) с последущей обработкой и выводом (php, perl иль ешшо как). Проблема в следущем - все это должно быть готово уже ...два месяца назад А мож есть готовые решения, че я квадратные колеса изобретаю?
уууу.... эт как то все круто... много лишнего... задачка-то примитивна как огурец, разобрать строку, сложить все цифры и отдать узеру...
спс, направление мысли понятно... хорошо, когда есть готовый качественный опенсофт но мне прежде всего интересен сам процесс отработки скриптов, передача параметров и т.п. на данном примере... решение к-рого м.б. полезным в других "нестандартных" ситуациях
Смотри, у тебя разделяет слова пробел - " "! С помощью explode - разделяем слова и пихаем в массив. Что-то типа: PHP: <? $str = "xxx.xxx.xxx.xxx - user [09/Apr/2008:14:14:26 +0700] 'GET /козявки/2.jpg HTTP/1.1' 200 78226"; list($dat1,$dat2,$dat3,$dat4,$dat5,$dat6,$dat7,$dat8,$dat9,$dat10) = explode(" ", $str); $dat5 = str_replace("+","",$dat5); #вырезаем + $dat5 = str_replace("]","",$dat5); #вырезаем ] # теперь как ты говоришь тебе всё нужно сложить #(цифры). Цифр у нас 3! в массиве это dat5,9,10! Вот #их и складываем. echo ($dat5+$dat9+$dat10); ?> Вот и всё. Выводит результат всех цифровых значений.
а чем, собсно, определяется длина массива? про "козявки-букашки", сам понимаш, эт малый фрагмент логов апача...