Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/18: Рейтинг темы: голосов - 18, средняя оценка - 4.89
1 / 1 / 0
Регистрация: 30.11.2016
Сообщений: 31

Загрузка лог-файла веб-сервера в БД

29.11.2018, 23:44. Показов 3678. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток всем форумчанам!
Выполняю я сейчас лабу по веб-программированию в универе. Не стану объяснять суть задания своими словами, просто скину его описание с методички:

Тема: «Разработка интернет-приложения по технологии PHP, методологии AJAX и с
использованием БД. Обработка лог-файлов веб-сервера.»
Цель: Разработать набор динамических страниц для обработки статистики посещаемости
Web-сервера. Лог-файл веб-сервера должен загружаться в нормализованную базу
данных. Структура (состав столбцов) выбирается студентом из фактической
необходимости для построения отчета. Реализовать отчет о статистике посещаемости по
индивидуальному варианту. (вариант: Объем скачанной информации за одну сессию)
Требования к реализации:
Загрузка лог-файла в БД должна быть реализована с использованием методологии AJAX.
Исходить из условия, что лог-файл является большим — 200 Мб и больше. Лог-файл
находится на сервере, страница инициирует загрузку лог-файла в БД порционно. Прогресс
загрузки должен отображаться на экране (в странице).
Для всех отчетов реализовать:
а) группировку по часам, дням, неделям, месяцам;
б) сортировку по произвольным полям;
в) выборка данных из БД для построения отчета должна осуществляться одним запросом.
Максимально оптимизировать всю обработку по времени.
Возможно, по желанию, использование диаграмм.
Этапы работы:
I. Установка и настройка веб-сервера, PHP, СУБД
II. Настройка журнала посещаемости Web-узла. Необходимые для протоколирования
в журнале поля определить самостоятельно.
III. Разработка структуры БД для хранения статистики
IV. Разработка скриптов для загрузки текущей статистики посещаемости в БД
V. Разработка серверных страниц анализа статистики посещаемости сервера. Выдать
отчет по параметрам в соответствии с персональным заданием (задание: Объем скачанной информации за одну сессию)

Собственно, вот задание. Не уверен, что данный раздел форума полностью покрывает технологии, которые мне необходимо юзать, но всё же решил создать здесь.
Проблема в том, что я не знаю даже, с чего начать и как подступиться к этому. Если с PHP и jQuery я ещё на прошлых лабах работал, то с AJAX нет. Гуглил, как с помощью него загрузить что-то в бд, ещё и порционно. Толком ничего подходящего мне не нашёл. Слишком большой разброс выдаваемой инфы и сложно выделить то, что мне пригодиться для лабы.

Юзаю я OpenServer, нашёл там папку logs, в которой лежат логи PHP, Apache и MySql.
Как я понял, мне нужно какой-то из них взять(какой хз), распарсить как-то и распихать по столбцам в БД. А потом уже при загрузке страницы динамически выводить таблицу с этими данными из БД + мой запрос на объем скаченной инфы за сессию. Под скаченной инфой подразумевается даже любой простой запрос в бд. И далее сделать функционал по её сортировке (что, наверное, не самое трудное здесь).

Теоретически - вроде понял суть задания. Практически - вообще не имею представления, как такое сделать.
Прошу помочь кто чем может: кодом, ссылками, разъяснениями - буду очень благодарен!
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.11.2018, 23:44
Ответы с готовыми решениями:

Regex для лог файла веб-сервера
Есть две строки (которые повторяются 10 000 раз) но дело не в том //string string1 = @"2010-06-25 20:58:11 fe80::a4a1:7534:68bd:251%10...

Создать программу анализа лог-файла прокси-сервера
Создать программу анализа лог-файла прокси-сервера, содержащего в каждой строке информацию о клиенте прокси-сервера, запрашиваемом адресе,...

Сохранение и загрузка файлов с Веб сервера
Есть стандартная программа, которая сохраняет информацию в xml документ, который сохраняется в указанной папке... ...

4
Эксперт PHP
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,909
30.11.2018, 02:38
Лучший ответ Сообщение было отмечено SammYDeviL как решение

Решение

Цитата Сообщение от SammYDeviL Посмотреть сообщение
мне нужно какой-то из них взять(какой хз)
Вам нужны логи посещений Apache. Название файла состоит из названия http-сервера (который вы выбираете в настройках) и приставки _queriesa.log.

У меня в настройках HTTP-сервер "Apache-PHP-7", соответственно логи лежат в Apache-PHP-7_queriesa.log.

Цитата Сообщение от SammYDeviL Посмотреть сообщение
распарсить как-то
Можно погуглить какие-нибудь библиотеки парсинга логов апача на PHP. Если их использовать нельзя и нужно сделать самому - можете здесь глянуть:
https://habr.com/post/131093/
Для учёбы сойдёт.

Либо можно изменить формат логов, выкинуть лишние параметры и добавить разделитель между параметрами. Для этого идём в Дополнительно -> Конфигурация -> выбираем свой Apache. В блокноте открываются два файла, в одним из них есть несколько директив LogFormat вроде таких:
Code
1
LogFormat "%v: %a %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
Можно изменить на что-нибудь вроде этого:
Code
1
"%v \" %a \" %t \" %r" combined
Затем в PHP также (как по ссылке выше) построчно читаем файл и каждую строку превращаем в массив:
PHP
1
$arr = explode('"', $string);
Дальше массив несложно будет записать в базу.

Цитата Сообщение от SammYDeviL Посмотреть сообщение
Гуглил, как с помощью него загрузить что-то в бд, ещё и порционно. Толком ничего подходящего мне не нашёл.
Это некорректный вопрос, AJAX ничего в базу загружать не может. Эта технология используется для отправки запросов к серверу без перезагрузки страницы.

Допустим, у вас есть скрипт log_writer.php, который переносит логи в базу. Вы перешли по ссылке - он выполнил работу. Теперь задача в том, чтобы он запускался не при переходе по ссылке, а чтобы при клике по кнопке на сайте браузер с помощью AJAX отправлял скрытый запрос на этот скрипт. Сам скрипт выполняется как обычно. Ну почти, нужно будет ещё индикатор прогресса запилить, но это несложно, в гугле полно примеров по запросу "Ajax progress bar jquery".
1
1 / 1 / 0
Регистрация: 30.11.2016
Сообщений: 31
30.11.2018, 12:56  [ТС]
Теперь задача в том, чтобы он запускался не при переходе по ссылке, а чтобы при клике по кнопке на сайте браузер с помощью AJAX отправлял скрытый запрос на этот скрипт.
А зачем по кнопке? По заданию, вроде как, просто открыл сайт - сразу началась загрузка лог-файла в БД порционно с использованием AJAX. Ну и полоса загрузки бежит.
Когда лог загрузился, как я понял, должна уже отобразиться страница с этими данными.

Ну в общем-то за наводки по парсингу спасибо, буду пробовать)
А идеи как это потом выводить пользователю есть?
0
Эксперт PHP
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,909
30.11.2018, 14:20
Цитата Сообщение от SammYDeviL Посмотреть сообщение
А зачем по кнопке?
Для удобства. Можно и без неё, хотя это будет выглядеть странно - только перешёл на страницу и сразу пошла какая-то загрузка.

Цитата Сообщение от SammYDeviL Посмотреть сообщение
А идеи как это потом выводить пользователю есть?
Здесь вроде ничего сложного, группировка - GROUP BY, сортировка - ORDER BY, получаем записи и выводим в таблицу.

Цитата Сообщение от SammYDeviL Посмотреть сообщение
Объем скачанной информации за одну сессию
Только здесь не совсем понятно, что есть сессия. Загрузка одной страницы?
1
1 / 1 / 0
Регистрация: 30.11.2016
Сообщений: 31
30.11.2018, 18:34  [ТС]
Jodah, а, про сессию не уточнил, да. В пред. лабе делали систему авторизации и соответственно в бд есть таблица юзеров. Ну и используются сессии, чтобы отслеживать залогиненного пользователя.
Вот токо я и сам не понимаю, что за инфу он должен скачивать. У меня сайт довольно статичный. Пытался выяснить у препода, он сказал что-то типо:"Любое обращение к бд - это уже скаченная инфа в битах". Ток юзер мой толком и не обращается нигде в бд. Только когда логиниться и выходит. Рефреш страницы, я так думаю, тоже скачивание инфы с сервера о том, как должна выглядеть страница. Мб это как-то считать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.11.2018, 18:34
Помогаю со студенческими работами здесь

Загрузка сайта с веб-сервера по IP-адресу
Здравствуйте. Такой вопрос, наверное глупый, но не могу разобраться. сейчас разбираюсь, тестирую веб-сервер и работу сайта на нем....

Загрузка по списку нескольких файлов с веб-сервера
При разработе приложения возникла необходимость загрузить по списку несколько файлов с https- вебсервера. Как сделать загрузку нового...

Анализатор лог-файла сервера apache, позволяющий отображать количество показов
Написать программу анализирующую лог файл сервера apache, позволяющую отображать кол-во показов каждой страницы. Страницы...

Анализатор лог-файла сервера apache, позволяющий отображать количество запросов с заданного IP
Я на первом курсе и ничего не понимаю в этом( Написать программу анализирующую лог файл сервера apache, позволяющую отображать кол-во...

Загрузка файла с сервера
Добрый вечер. У меня появилась необходимость скачивать автоматом с сервера файл, и я пошел на эту тему гуглить, и нашел вот это скрипт....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! в-строка - входное арифметическое выражение в инфиксной(обычной). . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru