Статистика отдачи документов сервером

Тема в разделе "PHP", создана пользователем serjinio, 29 апр 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. serjinio

    serjinio

    Регистр.:
    10 май 2007
    Сообщения:
    439
    Симпатии:
    49
    Требуется решить такую задачу собрать всю статистику какие файлы и документы (как статические так и динамически сформированые) отдает сервер по протоколу HTTP те как собирать эти данные средствами PHP ..вариант читать логи.. но не на всех хостах дают к ним доступ ..кроме того возникает проблема со статическими документами..отдавать их скриптом совершенно не хочется..может паралельно через модреврайт перекидывать все запросы на страницу статистики..нужно максимально рабочее решение...
     
  2. Jeurey

    Jeurey

    Регистр.:
    13 сен 2006
    Сообщения:
    419
    Симпатии:
    576
    Де описание задачи? Что именно нужно собирать? Время, юзерагента, еще что-то?
     
  3. Виллен

    Виллен

    Регистр.:
    12 мар 2009
    Сообщения:
    235
    Симпатии:
    60
    помоему если инкулдить статичный html (файл без тегов <? ?>) типа вот так:
    текст будет выдаваться напрямую сервером без обработки php.
    PHP:
    <?
    $url $_GET["url"];
    // здесь ведем статистику
    switch($url)
    {
    case 
    "static_page1.html": include("static_page1.html"); break;
    case 
    "static_page2.html": include("static_page2.html"); break;
    case 
    "dynamic_page1.php": include("dynamic_page1.php"); break;
    default: include(
    "404.html");
    }
    ?>
    }
     
  4. ashenemy

    ashenemy Создатель

    Регистр.:
    15 авг 2007
    Сообщения:
    14
    Симпатии:
    0
    Более подробно напишите задачу,
    посчитать можно все, вплодь до того сколько байтов успел скачнуть юзер до того как у него инет отрубился, вообщем все, если распишите по пунктам попрбую помочь
     
  5. serjinio

    serjinio

    Регистр.:
    10 май 2007
    Сообщения:
    439
    Симпатии:
    49
    Задача стоит такая, что бы создать страницу статистики со скриптом на которой отслеживать все обращения к серверу и что и кому он отдает
    тотже юзер-агент, айпи, рефер, точки входа и выхода, какие файлы и документы отдаются и кому, но не инклюдить код этого счетчика на все страницы сайта..ну например отслеживать обращение к статическим документам допустим роботс.тхт внедрить в него код счетчика не получится без извращений ..конечно можно его отдавать через скрипт типа роботс.пхп с внедренным через инклюд в него кодом счетчика, а в модреврайте переадресовывать запрос с роботс .тхт на роботс.пхп и так со всеми статическими документами и файлами ..но я этого не хочу..мне надо чтобы ЛЮБОЕ обращение к сайту, те к любой странице или файлу отлавливал скрипт на отдельной странице статистики при этом его код никуда не инклюдился..те самостоятельная страничка отлавливающая все заголовки обращения и ответа сервера к данному сайту...
     
  6. sher_hAn

    sher_hAn Писатель

    Заблокирован
    Регистр.:
    16 окт 2007
    Сообщения:
    5
    Симпатии:
    0
    а не проще поствить cnstats?
     
  7. vivid

    vivid Постоялец

    Регистр.:
    13 апр 2009
    Сообщения:
    143
    Симпатии:
    18
    ТС видимо нужно запускать такое на шаред хостинге. самый быстрый вариан это походу использовать редиректы: все ресурсы отдавать по идентификатору
    PHP:
    mysql_query("update res set hits= hits+1 where id = $id");
    $row  mysql_fetch_assocmysql_query("select path from res where id=$id"));
    header("Location: {$row['path']}");
    где res это таблица с ресурсами и счетчиками хитов.

    а для того чтоб не дать возможности скачивать по путям на которые редиректят прийдется попотеть, ибо надо отадвать корректные Mime-типы скачки, возможно как то в хедере можно указать как называется файл, а вот содержимое можно просто брать при помощи ф-ции file_get_contents
     
  8. lobzik

    lobzik

    Регистр.:
    8 авг 2006
    Сообщения:
    311
    Симпатии:
    49
    Извращенная задача у вас. Самый адекватный вариант - парсить логи. Если не можете, то все равно парсте логи :D

    Но можно решить задачу спомощью мод реврайта. В мод реврайте делаете так, что бы по запросу любого файла отдавался наш файл(н-р: stat.php), но замете не редеректить (заголовки должны отдаться те же самые). в файле stat.php вы получаете всю нужную информацию и записываете её куда надо, НО при этом ничего не должны выводить (если только какие-то свои заголовки хотите добавить). После чего делаете инклуд запрошеного файла. По идеи все должно пройти нормально. Проблема может быть только в заголовках и могут не передастся post и get запросы, но это врятли. И вообще это будет огромная нагрузка на сервер и кеширование не будет работать.
     
  9. bkackh

    bkackh Создатель

    Регистр.:
    1 сен 2008
    Сообщения:
    30
    Симпатии:
    4
    Да прекрасный вариант да и делается это очень просто. Причем для любых систем.
    (?=([^\"]*\"[^\"]*\")*(?![^\"]*\"))")

    или так
    ^(?<client>\S+)\s+(?<auth>\S+\s+\S+)\s+\[(?<datetime>[^]]+)\]\s+"(?:GET|POST|HEAD) (?<file>[^ ?"]+)\??(?<parameters>[^ ?"]+)? HTTP/[0-9.]+"\s+(?<status>[0-9]+)\s+(?<size>[-0-9]+)\s+"(?<referrer>[^"]*)"\s+"(?<useragent>[^"]*)"$
     
Статус темы:
Закрыта.