помогите "прочитать" лог апача

Discussion in 'PHP' started by dekloper, 20 Apr 2008.

  1. dekloper

    dekloper New Member

    Joined:
    11 Oct 2005
    Messages:
    18
    Likes Received:
    0
    Reputations:
    0
    помогите "прочитать" лог апача 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 иль ешшо как).
    Проблема в следущем - все это должно быть готово уже ...два месяца назад :(


    А мож есть готовые решения, че я квадратные колеса изобретаю?
     
  2. Ymrs

    Ymrs Elder - Старейшина

    Joined:
    29 Jan 2008
    Messages:
    206
    Likes Received:
    133
    Reputations:
    52
    посмотри на _http://awstats.sourceforge.net/
    HTTP/1.0 206 Partial Content" это для докачки.
     
    #2 Ymrs, 20 Apr 2008
    Last edited: 20 Apr 2008
  3. dekloper

    dekloper New Member

    Joined:
    11 Oct 2005
    Messages:
    18
    Likes Received:
    0
    Reputations:
    0
    уууу.... эт как то все круто... много лишнего...
    задачка-то примитивна как огурец, разобрать строку, сложить все цифры и отдать узеру...
     
  4. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    вообщето для такой цели на серваках ставят Webalizer - который как раз и ведет подобную статистику :)
     
  5. dekloper

    dekloper New Member

    Joined:
    11 Oct 2005
    Messages:
    18
    Likes Received:
    0
    Reputations:
    0
    спс, направление мысли понятно... хорошо, когда есть готовый качественный опенсофт ;)

    но мне прежде всего интересен сам процесс отработки скриптов, передача параметров и т.п. на данном примере... решение к-рого м.б. полезным в других "нестандартных" ситуациях ;)
     
  6. KindEcstasy

    KindEcstasy Banned

    Joined:
    30 Sep 2006
    Messages:
    105
    Likes Received:
    64
    Reputations:
    54
    Смотри, у тебя разделяет слова пробел - " "! С помощью 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);
    ?>
    Вот и всё. Выводит результат всех цифровых значений.
     
  7. dekloper

    dekloper New Member

    Joined:
    11 Oct 2005
    Messages:
    18
    Likes Received:
    0
    Reputations:
    0
    а чем, собсно, определяется длина массива? про "козявки-букашки", сам понимаш, эт малый фрагмент логов апача...