![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
rMaveric |
|
||||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 375 Регистрация: 18.7.2003 Репутация: 3 Всего: 6 |
Нужно парсить файлы различных форматов и составление по ним отчетов.
Файлы логи Апача, Сквида и подобных серверов... Формат изменяем. Для скана использую регулярные выражения. проблема. 1. Если я читаю файл построчно
Проблема: Ужастные тормоза при чтении 2. Читаю другой функцией.
Проблема: Читает только первые 100 срок 3. Читаю в масив
Проблема: Читает очень быстро. Парсит невероятно долго. Перепробовал все что только мог придумать. парсить логи нужно около 100Мб лог... и нужно быстро -------------------- |
||||||
|
|||||||
Secandr |
|
|||
![]() Связист ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4043 Регистрация: 3.8.2003 Где: Russia, Volgograd Репутация: 5 Всего: 39 |
rMaveric
![]() А зачем тебе читать весь файл? Ты же его разбираешь регами, вот и разбирай каждую строчку отдельно. У меня логи squid`а за месяц парсятся менее 2 секун. При этом пользователей несколко сотен. Правда написан грабер на перле. Перл изночально создавался для работы с потоками данных. |
|||
|
||||
rMaveric |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 375 Регистрация: 18.7.2003 Репутация: 3 Всего: 6 |
2 Secandr
дно из принцыпиальный требований ПХП не мой каприз. Я и так использую перл совместимые и если не ошибась эти функции (не считая маленьких отличий) братья близнецы написаные на сишке и в ПХП и в Перде. Я бы с удовользствием парсил построчно, вот думаю вот о какой проблеме. мне все это дело, кроме отчета в базу нужно. И мне показалось проще было бы пропарсить целиком... Но сейчас проследил объемы памяти сжираемые и понял что ошибаюсь. поэтому буду наверно парсить построчно и голову не морочить. Спасибо -------------------- |
|||
|
||||
Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 122 Всего: 261 |
rMaveric
можно попробовать поработать с потоками напрямую, но я об этом только слышал. Второй вариант, попробуй file();, я не замерял, но имхо он может быстрее файл читать... |
|||
|
||||
rMaveric |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 375 Регистрация: 18.7.2003 Репутация: 3 Всего: 6 |
2 Mal Hack
file() работает с тойже скоростью как и
Но что-то в таком случае тормоза при парсинге... Помогите. может я не логично прописал правило?
Нужно парсить лог апача 192.168.0.27 - - [04/Jan/2005:03:01:50 +0000] "GET / HTTP/1.1" 200 18184 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7.5) Gecko/20041107 Firefox/1.0" -------------------- |
||||
|
|||||
Mal Hack |
|
||||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 122 Всего: 261 |
Вывод:
|
||||
|
|||||
IZ@TOP |
|
|||
![]() Панда-бир! ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4795 Регистрация: 3.2.2003 Где: Бамбуковый лес Репутация: 44 Всего: 73 |
rMaveric, нет, file работает быстрее, я уже замерял.
-------------------- Один из розовых плюшевых-всадников апокалипсиса... очень злой... Семь кругов ада для новых элементов языка Мои разрозненные мысли |
|||
|
||||
Secandr |
|
|||
![]() Связист ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4043 Регистрация: 3.8.2003 Где: Russia, Volgograd Репутация: 5 Всего: 39 |
Сейчас посмотрел на свою софтину, оказалось что логи сквида я читаю полностью, только логи у меня разбиты по дням
![]() |
|||
|
||||
IZ@TOP |
|
|||
![]() Панда-бир! ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4795 Регистрация: 3.2.2003 Где: Бамбуковый лес Репутация: 44 Всего: 73 |
Secandr, я кстате тож писал как то обработчик логов, только для логов по стандарту W3C.
Незнаю правда сохранилась у меня эта штука или нет... -------------------- Один из розовых плюшевых-всадников апокалипсиса... очень злой... Семь кругов ада для новых элементов языка Мои разрозненные мысли |
|||
|
||||
Secandr |
|
|||
![]() Связист ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4043 Регистрация: 3.8.2003 Где: Russia, Volgograd Репутация: 5 Всего: 39 |
IZ@TOP У меня точно сохранилась. У всего офиса из зарплаты по 200-500р вычитает
![]() rMaveric Может лучше логи правильно складывать - не в один файл, а по дням или неделям. Логи за день обрабатываются довольно легко. И если посадить скрипт на крон, а результаты писать в БД, то всё летает. |
|||
|
||||
Opik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 1918 Регистрация: 6.10.2004 Где: Рига Репутация: 24 Всего: 55 |
rMaveric а попробуй:
file_get_contents(); |
|||
|
||||
rMaveric |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 375 Регистрация: 18.7.2003 Репутация: 3 Всего: 6 |
2 Mal Hack
Спасибо. слегка проапгрейдил твою строку.. И получилось то что нужно ![]() 2 IZ@TOP Только что замерил. Одинаково. ТОчнее разное но зависит от пятен на луне и от магнитного поля юпитера. И я сейчас пишу парсинг ВСЕВОЗМОЖНЫХ логов с возможностью настройки. Так что если вдруг кому... мне будет не жалко поделиться. Добавлено @ 17:12 2 Secandr Нет не правельно ![]() Мне не только свои логи нужно обрабатывать.... -------------------- |
|||
|
||||
rMaveric |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 375 Регистрация: 18.7.2003 Репутация: 3 Всего: 6 |
Еще вопрос. в тему.
Кто может порекомендовать ХОРОШУЮ доку или на худой ... книгу по составлению регулярных выражений? Требуется не учебник с описанием что означает тот или иной клас и подобное. А именно разъяснение насчет оптимизации выражния. В каких случаях и что лучше использовать для достижения максимальной производительности. Просто одно и тоже действие зделать можно 1 миллионом способов, но не понятно какой из них более рационален в той или иной ситуации. ![]() -------------------- |
|||
|
||||
Secandr |
|
|||
![]() Связист ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4043 Регистрация: 3.8.2003 Где: Russia, Volgograd Репутация: 5 Всего: 39 |
Книга O`Relly "Регулярные выражения". Там описан принцип и механизм действия регов, а так же оптимизация. После прочтения думать будешь по другому...
|
|||
|
||||
Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 4 Всего: 317 |
После этого полезно разобраться с формальными грамматиками, в частности простыми в теории регулярными выражениями.
-------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |