(При необходимости перейдите к serverfault - мне это больше кажется проблемой приложения)
У меня есть PHP-сервер, на котором размещены файлы MP3 для подкаста. Я бы хотел получить разбивку по неделям, сколько раз файлы были загружены (действительно ли длинный хвост?). AWStats, похоже, не попадает в точку.
В идеале я бы получил файл Excel с одним файлом в каждой строке, затем столбец для каждой недели (или дня) с цифрами загрузки, агрегированными в одной ячейке для каждого файла / недели. Есть ли какое-нибудь решение (на основе PHP или приложение Windows, в которое я загружаю журналы), которое могло бы генерировать этот формат отчета?
Вы можете использовать журналы apache, чтобы узнать, когда происходит доступ к файлам, и просто обработать файл журнала. Я знаю, что существует множество инструментов для автоматического анализа журналов, хотя я никогда ими не пользовался.
Возврат результатов поиска Google колючий, с образцом журнала Вот
Другая мысль - передать запрос через страницу, которая зарегистрирует запрос в базе данных mysql, оттуда вы можете сгенерировать желаемые журналы
Предложение @phsr о показе страницы - лучшее. Но если вы не хотите этого делать, простой сценарий bash должен иметь возможность получить то, что вы хотите, из файлов журнала.
Я не очень хорошо разбираюсь в bash и т. Д., Но если файлы находятся в одном и том же каталоге, должно работать что-то вроде этого (псевдокод):
for each $file in $mp3dir
echo $file + ',' + `cat apache.log | grep $file | wc -l` >>myreport.csv
Конечно, фильтр grep может включать что-то еще более конкретное, чтобы изолировать нерелевантные строки, которые могут существовать в журнале (ах).
Кроме того, apache.log на самом деле является накопительным кошка указанного файла журнала за период времени (при условии, что у вас есть надлежащий logrotate для ежедневной ротации журналов).
Другой подход может заключаться в использовании grep чтобы получить все строки ".mp3" из журнала, и используя sed чтобы сформировать строку csv из каждой записи, чтобы у вас было имя файла и дата в одной строке. Затем загрузите это в базу данных и выполните запросы оттуда.
Если кто-то может поместить это в "настоящий" bash, пожалуйста, сделайте :)
Вам нужно будет проанализировать файлы журнала веб-сервера. Формат журнала будет зависеть от веб-сервера и того, как настроено ведение журнала. Существуют модули для большинства языков, которые делают анализ журналов относительно тривиальным. Нет причин прибегать к написанию чего-либо с нуля на bash или awk.
Если вы не хотите писать какой-либо код, я предлагаю попробовать splunk. Существует бесплатная версия, которая позволяет вам анализировать до 500 МБ данных журнала ежедневно, это много данных журнала, поэтому вам подойдет бесплатная версия / версия для сообщества.
Splunk также может экспортировать результаты за вас.