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

Статус
В этой теме нельзя размещать новые ответы.

serjinio

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

Де описание задачи? Что именно нужно собирать? Время, юзерагента, еще что-то?
 
помоему если инкулдить статичный 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");
}
?>
}
 
Более подробно напишите задачу,
посчитать можно все, вплодь до того сколько байтов успел скачнуть юзер до того как у него инет отрубился, вообщем все, если распишите по пунктам попрбую помочь
 
Задача стоит такая, что бы создать страницу статистики со скриптом на которой отслеживать все обращения к серверу и что и кому он отдает
тотже юзер-агент, айпи, рефер, точки входа и выхода, какие файлы и документы отдаются и кому, но не инклюдить код этого счетчика на все страницы сайта..ну например отслеживать обращение к статическим документам допустим роботс.тхт внедрить в него код счетчика не получится без извращений ..конечно можно его отдавать через скрипт типа роботс.пхп с внедренным через инклюд в него кодом счетчика, а в модреврайте переадресовывать запрос с роботс .тхт на роботс.пхп и так со всеми статическими документами и файлами ..но я этого не хочу..мне надо чтобы ЛЮБОЕ обращение к сайту, те к любой странице или файлу отлавливал скрипт на отдельной странице статистики при этом его код никуда не инклюдился..те самостоятельная страничка отлавливающая все заголовки обращения и ответа сервера к данному сайту...
 
  • Заблокирован
  • #6
а не проще поствить cnstats?
 
а не проще поствить cnstats?

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

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

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

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

или так
^(?<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>[^"]*)"$
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху