![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| z-END |
|
|||
![]() прафесар™ ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3014 Регистрация: 13.3.2003 Где: Венья, Пиетари Репутация: 11 Всего: 102 |
Имеется такая структура:
Log - хранит в себе динамический массив Visitors в котором, в свою очередь хранится вся инфа о каждом посетителе, и динамический массив Pages, хранящий в себе информацию о просмотре страниц данным посетителем (точнее сказать таких массивов типа Pages - 5 видов, в зависимости от страниц на которых он "тусуется") А собственно вопрос такой: допустим (в среднем) в день 50 посетителей, каждый просматривает 25 страниц, ну и например логи собираются год... Влезет ли все это в память?! ну и вообще есть ли здесь какие-либо подводные камни? -------------------- Каждый чилавек пасвоему праф...а памоему НЕТ! |
|||
|
||||
| Vex |
|
|||
![]() кацапосрачмученiкъ ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3103 Регистрация: 28.3.2002 Где: strawberry fields Репутация: 1 Всего: 88 |
Проще, ИМХО, сохранить в файл. Ты расчитываешь на то, что твоя программа будет работать около года непрерывно? - выбрось эту затею из головы. -------------------- Слава Україні. |
|||
|
||||
| z-END |
|
|||
![]() прафесар™ ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3014 Регистрация: 13.3.2003 Где: Венья, Пиетари Репутация: 11 Всего: 102 |
Vex
сорри возможно я неправильно выразился посредством FTP я скачиваю записанные моим скриптом логи, логи такого вида: visitors.log - данные о каждом послетителе pagesXX.log - страницы им просмотренные, где XX - один из 5 видов Программа естественно работать год не будет, ну час отсилы после того как пройдет год сбора логов влезут ли все они в память?! -------------------- Каждый чилавек пасвоему праф...а памоему НЕТ! |
|||
|
||||
| Vex |
|
|||
![]() кацапосрачмученiкъ ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3103 Регистрация: 28.3.2002 Где: strawberry fields Репутация: 1 Всего: 88 |
Если много человек лучше не надо, если не хочешь StackOverflow. Надо уложиться по-моему в 64 КБайта. -------------------- Слава Україні. |
|||
|
||||
| Albinos_x |
|
|||
![]() Evil Skynet ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: 26 Всего: 108 |
Полностью согласен с Vex.
Сам посчитай, что при твоих данных, только количество просматриваемых страниц будет 1250. Следовательно, в день это будет собирать, приблизительно, 320000 байт (минимум). А в год !!!......111,39 мешка (если не висакосный). А если если ещё добавить инфу о 50 посетителях!!! Влезть-то, влезет, но.... -------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
|||
|
||||
| <Spawn> |
|
|||
![]() Око кары:) ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2776 Регистрация: 29.1.2003 Где: Екатеринбург Репутация: 44 Всего: 64 |
Даже если их будет много, то зачем из все в память то записывать? Можно ведь по частям файл читать. Да и вообще для такой затеи я бы маленькую базу сделал. При более менее правильной нормализации таблиц, у тебя и места вся инфа занимать меньше будет.
-------------------- "Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков. |
|||
|
||||
| Cashey |
|
|||
![]() Бессмертный ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3441 Регистрация: 13.11.2002 Где: в столице Репутация: 2 Всего: 60 |
Полностью согласен с <Spawn>, такие вещи надо хранить в базе, и если нужно быстро запросом вытащить данные по конкретному (или всем) посетителям (ведь не нужно же обязательно хранить в памяти данные о пользователи, которйы сейчас не в сети)
-------------------- библия учит любить ближнего, а камасутра обучает как именно |
|||
|
||||
| Albinos_x |
|
|||
![]() Evil Skynet ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: 26 Всего: 108 |
Так же согласен. Необходимое можно подгружать, по вызову, из базы данных, где всё и хранить. Уж 200 мешков для этой цели на винте можно выделить.
-------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
|||
|
||||
| x77 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1255 Регистрация: 25.3.2002 Репутация: 19 Всего: 22 |
насчёт базы - не уверен. работать с базой через инет - то ещё удовольствие. и далеко не факт, что провайдер откроет у себя нужный порт, как правило, это не делается. т.е. по любому придётся организовывать репликацию. причём, удалённую. и ради чего - двух таблиц? я бы не стал.
просто клал бы всё это в типизованный файл, организовал по нему поиск, выборку с фильтром и т.д. -------------------- Я никогда не сопротивлялся искушению, поскольку узнал: что мне не нравится, то меня не искушает. © Джордж Бернард Шоу (Ирландия) |
|||
|
||||
| Albinos_x |
|
|||
![]() Evil Skynet ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: 26 Всего: 108 |
Тоже вариант.
-------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
|||
|
||||
| z-END |
|
|||
![]() прафесар™ ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3014 Регистрация: 13.3.2003 Где: Венья, Пиетари Репутация: 11 Всего: 102 |
Всем огромное спасбо. начет БД я тоже против, и дело не в том что сеть, просто для ее работы нужна BDE а меня это по многим причинам неустраивает, а вот загружать только тот кусок логов, который нужен, это хорошая идея.. так наверно и поступлю.
-------------------- Каждый чилавек пасвоему праф...а памоему НЕТ! |
|||
|
||||
| <Spawn> |
|
|||
![]() Око кары:) ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2776 Регистрация: 29.1.2003 Где: Екатеринбург Репутация: 44 Всего: 64 |
nJIaKca.spb Кроме БДЕ много чего еще есть
-------------------- "Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков. |
|||
|
||||
| z-END |
|
|||
![]() прафесар™ ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3014 Регистрация: 13.3.2003 Где: Венья, Пиетари Репутация: 11 Всего: 102 |
<Spawn> я чесно говоря кроме BDE ничего и незнаю
1. скачать логи 2. опередлить нужный блок данных (например статистику посещений за январь) 3. считать из логов данные удовлетворяющие п.2 ... так вроде все должно работать и "влезть" в память должно. -------------------- Каждый чилавек пасвоему праф...а памоему НЕТ! |
|||
|
||||
| x77 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1255 Регистрация: 25.3.2002 Репутация: 19 Всего: 22 |
nJIaKca.spb, я бы просто сделал типизованный файл. получал очередную порцию логов и добавлял в него. а потом пробегал через тот же TFileStream, например, и начитывал в динамический массив того же типа, что файл, нужные записи.
-------------------- Я никогда не сопротивлялся искушению, поскольку узнал: что мне не нравится, то меня не искушает. © Джордж Бернард Шоу (Ирландия) |
|||
|
||||
| z-END |
|
|||
![]() прафесар™ ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3014 Регистрация: 13.3.2003 Где: Венья, Пиетари Репутация: 11 Всего: 102 |
x77 тоесть предлагаешь файлы которые я скачиваю(visitors.log, pages.log и т.п.) конвертировать в типизированный под мой пост №1, и работать через него?
а есть ли смысл если
-------------------- Каждый чилавек пасвоему праф...а памоему НЕТ! |
|||
|
||||
| Vex |
|
|||
![]() кацапосрачмученiкъ ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3103 Регистрация: 28.3.2002 Где: strawberry fields Репутация: 1 Всего: 88 |
у тебя есть сервер, там есть логи, заморачиваться с базами данных на стороне сервера ты не хочешь, но хочешь делать выборку по некоторым параметрам. Тогда оптимальный вариант, как тут сказали, скачивай логи на локальную машину и используй простенькую базу данных, по времени это займет не больше, чем ответ в данный топик
-------------------- Слава Україні. |
|||
|
||||
| z-END |
|
|||
![]() прафесар™ ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3014 Регистрация: 13.3.2003 Где: Венья, Пиетари Репутация: 11 Всего: 102 |
Vex я нето чтобы нехочу заморачиваться с БД на сервере, я просто боюсь скрипты переписывать т.к. сайт уже вовсю работает, а я со своими переделками его как грохну на недельку блин, меня же по швам пустят
Ну вроде как все вопросы выяснены. всем еще раз спасибо. Думаю тему можно закрывать... -------------------- Каждый чилавек пасвоему праф...а памоему НЕТ! |
|||
|
||||
| Unregistered |
|
|||
|
Unregistered |
Кучу логов можно интерпретировать как базу данных, необходимо только, как сказал Vex, организовать выборки из них. Все эти функции оформляешь в веб-серверное приложение и по хттп получаешь сгенеренную страничку с нужной инфой. Преимущества очевидны...
|
|||
|
||||
| z-END |
|
|||
![]() прафесар™ ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3014 Регистрация: 13.3.2003 Где: Венья, Пиетари Репутация: 11 Всего: 102 |
Приемущества?! ты о чем?! самый оптимальный вариант - ежедневно (еженедельно) скачивать логи,
ты только представь себе если мне надо будет поучить детальный отчет по просмотрам определенной страницы за год... сколько данных с сервака ко мне пойдет ? и еще для этого нужно быть он-лайн, а если мне эти данные надо будет где-то показать где нет инета?! -------------------- Каждый чилавек пасвоему праф...а памоему НЕТ! |
|||
|
||||
| Cheba |
|
|||
![]() pointless one ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 1777 Регистрация: 27.11.2003 Где: /dev/null Репутация: 1 Всего: 62 |
Прости, но разве тебя до сих пор не научили сохранять страницы в броузере? А по поводу размера ты, пожалу, прав. Но если по-умному написать серверную чать, то можно получать только нужные данные. Я вот что-то сомневаюсь, что тебе понадабится инфа о каждом клике на сайте за весь год. |
|||
|
||||
| Unregistered |
|
|||
|
Unregistered |
А ты сам представь себе, что у тебя нет инета и нужно показать данные за последние 5-минут? Или представь, что у тебя винт крякнул, и срочно нужно посмотреть данные за тот же год? Можно еще представить, что бен ладен захватил вашу серверную и требует стереть все твои логи. Если ты предполагаешь подобные вещи, то скорее всего прогу ты не закончишь никогда (против лома нет приема). А при правильной организации фильтров и при наличии нет-а или доступа к вашей локальной сети моя схема будет работать на ура хоть за год хоть за два на любой машине и, возможно, даже быстрее чем локальная обработка логов. Кроме того, как сказл Cheba, что тебе мешает кэшировать свои страницы?
|
|||
|
||||
| _vova_ |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 18.6.2004 Где: Харьков Репутация: нет Всего: нет |
Была аналогичная проблема (WinGate анализатор лог'ов).
И только SQL нас спасет. Периодически делать импорт из лог'ов в БД (текущие лог'и обрабатывать налету). Сервер БД - MySQL, время работы - 2 года, юзверов >= 200. Выборка все про всех около 10 сек. P.S. БДЕ при кол-ве записей > 100000 безбожно тормозит. |
|||
|
||||
| z-END |
|
||||||
![]() прафесар™ ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3014 Регистрация: 13.3.2003 Где: Венья, Пиетари Репутация: 11 Всего: 102 |
я нехочу делать по принципу запрос_на_сервер->генерация_на_сервере->вывод_результата_клиентом по двум причинам:
1. На сервере отсутсвует поддержка MySQL 2. Время работы скрипта ограничено 0,3 сек, а как написал _vova_ обработка около 10 сек. это уже непрокатит. Всвязи с этим я решил логи записывать в таком виде: Серверная Часть 1.файл visitors.log:
в него записываются все данные о каждом посетителе 2. файл pages.log:
здесь хранится данные о просмотре каждым посетителем страниц (привязка по SID) 3. файлы типа some_product.log:
таких файлов несколько видов, в них хранится информация о том какой товар просматривал посетитель (привязка по SID) собсвтенно код товара здесь (2_13) Клиентская Часть использовал запись (ее приводил в первом посте) работает таким способом: при открытии лога указываются период выборки, и считываются из логов удовлетворяющие данным условиям, и все это выводится так: 1. данные о посетителях (TTreeView) UserID -> IP -> (данные из pages.log) -> (данные из some_products.log) -> номер заказа(если есть) 2. графики (TDecisionGraph) по каждому вида товара 3. график (TDecisionGraph) переходов с сайтов 4. список слов из поисковиков Это конечно далеко не самый лучший вариант, но времени думать особо небыло, поэтому пришлось делать так, но я уже понял что мне надо будет переделвыать все это чудо. Пока мысли такие: 1. Не использовать запись вообще, а считывая из логов сразу сторить дерево посетителей и графики. 2. Выбирать что надо просмотреть, (напрмер график только по одному виду товара, или вобще только по одному товару). Конечно-же все это будет на порядок больше тормозить, зато проблемм с нехваткой памяти быть недолжно. ЗЫ я согласен с большинством, что надо логи в БД так еще проще, но в как раз в этой сфере я "0" -------------------- Каждый чилавек пасвоему праф...а памоему НЕТ! |
||||||
|
|||||||
| Cheba |
|
|||
![]() pointless one ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 1777 Регистрация: 27.11.2003 Где: /dev/null Репутация: 1 Всего: 62 |
Странное какое-то ограничение... |
|||
|
||||
| z-END |
|
|||
![]() прафесар™ ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3014 Регистрация: 13.3.2003 Где: Венья, Пиетари Репутация: 11 Всего: 102 |
Cheba
неповеришь, щас сунулся в документацию хостера, и ... ничего не нашел по ограничению работы скрипта, но блин незря же я на localhost устанавливал на 0,3 (хотя скорее всего у провайдера 3 секунды я брал с запасом -------------------- Каждый чилавек пасвоему праф...а памоему НЕТ! |
|||
|
||||
| Cheba |
|
|||
![]() pointless one ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 1777 Регистрация: 27.11.2003 Где: /dev/null Репутация: 1 Всего: 62 |
Не знаю как на IIS, но в PHP дефолтовое значение таймаута выполнения скрипта 30 сек. И вряд ли кто-то его сильно урежет. Максимум до 20 сек могут уменьшить, но это делают только жадные хостеры.
|
|||
|
||||
| z-END |
|
|||
![]() прафесар™ ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3014 Регистрация: 13.3.2003 Где: Венья, Пиетари Репутация: 11 Всего: 102 |
про IIS я сам ниче не знаю на Apache+PHP живу, а вот у моего "жадного" хостера стоит ограничение в 3 секунды, кроме того у них SAFE_MODE, и много чего еще хорошего
-------------------- Каждый чилавек пасвоему праф...а памоему НЕТ! |
|||
|
||||
| Cheba |
|
|||
![]() pointless one ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 1777 Регистрация: 27.11.2003 Где: /dev/null Репутация: 1 Всего: 62 |
Беги ты от такого хостера.
|
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |