Подсчет скачиваемого трафика. Файлы отдаются через readfile()

GrayMaster

Новичок
Подсчет скачиваемого трафика. Файлы отдаются через readfile()

Добрый день!
Подкиньте идею как можно реализовать подсчет скачиваемого трафика? Файлы отдаются через PHP скрипт, функцией readfile(). Писать в статистику размер файла на этом этапе - не подходит, т.к пользователь может и не скачать файл, а просто дернуть HEAD заголовки.
Как то на PHP можно? Или это уже средствами веб-сервера (парсить логи и т.д.)?
Спасибо.
 

Sepuka

Новичок
Я вот подумал, что если не стоит nginx или т.п. а, допустим apache отдает напрямую клиенту контент, то ведь есть время отдачи скрипта, которое можно видеть в логах и по нему судить, качали по адресу или нет. Написать например:
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %T" и мониторить последнюю циферку. По-крайней мере не придется ни чего писать дополнительно, но накладно с точки зрения медленных клиентов и количества апач-процессов.
 

dimagolov

Новичок
что характерно, более дурацкого решения организовывать отдачу файлов (даже на пхп), чем readfile, трудно себе придумать...
 

GrayMaster

Новичок
Автор оригинала: dimagolov
что характерно, более дурацкого решения организовывать отдачу файлов (даже на пхп), чем readfile, трудно себе придумать...
Забыл про range:. Ну это уже поправлено, файл будет отдаваться PHP скриптом правильно обрабатывая все HTTP заголовки, включая рэнж.
Farsh, спасибо!

Пришёл к 2м способам: 1. парсить логи, 2. отдавать файл циклом, и на событие shutdown писать в лог сколько успели отдать.
Скорее всего пока предпочту 2й, т.к. мне файл нужно отдавать только после успешной авторизации по средствам куков. Если будет сильно грузить, переделаю на 1й.
 

GrayMaster

Новичок
Ещё раз всё обдумали - и передумали :) Файл через 301 будет отдаваться апачем. Пхп скрипт авторизирует юзера, затем пинает на апач. Апач проверяет куку, если она есть, отдает файл (примитивная, но всё же защита от распространения урла).

Всем спасибо за советы! Вопрос решен.
 
Сверху