Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Dynamic Arrays, мнение экспертов:) 
:(
    Опции темы
z-END
  Дата 13.6.2004, 09:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прафесар™
****


Профиль
Группа: Комодератор
Сообщений: 3014
Регистрация: 13.3.2003
Где: Венья, Пиетари

Репутация: 11
Всего: 102



Имеется такая структура:
Код
ThePages = Record
        Accessed: TDateTime;
        PageID: Word;
        {...}
 end;

TheUser = Object
       SID: String[64];
       IP: TheIP;
       Referrer: String;
       Browser: TheBrowser;
       Entered: TDateTime;
       Pages: Array of ThePages;
       function SessionDuration: Integer;
       {...}
       procedure CleanUp;  //обнуляет массив Pages
 end;

TheLog = Object
   private
      {...}
   public
      Visitors: Array of TheUser;
       {...}
      procedure OpenLog (ADir: String); // считывает данные из файлов лога и создает масив Visitors
      procedure CloseLog; // выполняет Visitors[xx].CleanUp; и обнуляет массив Visitors.
end;

var
 Log: TheLog;
{...}
Как нетрудно было догадаться, ета структура является счетчиком посетителей на сайте:
Log - хранит в себе динамический массив Visitors в котором, в свою очередь хранится вся инфа о каждом посетителе, и динамический массив Pages, хранящий в себе информацию о просмотре страниц данным посетителем (точнее сказать таких массивов типа Pages - 5 видов, в зависимости от страниц на которых он "тусуется")

А собственно вопрос такой:
допустим (в среднем) в день 50 посетителей, каждый просматривает 25 страниц, ну и например логи собираются год...
Влезет ли все это в память?! ну и вообще есть ли здесь какие-либо подводные камни?


--------------------
Каждый чилавек пасвоему праф...а памоему НЕТ! 

PM WWW ICQ   Вверх
Vex
Дата 13.6.2004, 09:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


кацапосрачмученiкъ
****


Профиль
Группа: Экс. модератор
Сообщений: 3103
Регистрация: 28.3.2002
Где: strawberry fields

Репутация: 1
Всего: 88



Цитата
Влезет ли все это в память?!


Проще, ИМХО, сохранить в файл.

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


--------------------
Слава Україні.
PM   Вверх
z-END
Дата 13.6.2004, 09:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прафесар™
****


Профиль
Группа: Комодератор
Сообщений: 3014
Регистрация: 13.3.2003
Где: Венья, Пиетари

Репутация: 11
Всего: 102



Vex
сорри возможно я неправильно выразилсяsmile.gif суть такая:
посредством FTP я скачиваю записанные моим скриптом логи, логи такого вида:
visitors.log - данные о каждом послетителе
pagesXX.log - страницы им просмотренные, где XX - один из 5 видов

Программа естественно работать год не будет, ну час отсилыsmile.gif а вот логи накапливаются 24 часа в сутка 356(или сколько их там) дней в году, поэтом я и спришиваю:
после того как пройдет год сбора логов влезут ли все они в память?!



--------------------
Каждый чилавек пасвоему праф...а памоему НЕТ! 

PM WWW ICQ   Вверх
Vex
Дата 13.6.2004, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


кацапосрачмученiкъ
****


Профиль
Группа: Экс. модератор
Сообщений: 3103
Регистрация: 28.3.2002
Где: strawberry fields

Репутация: 1
Всего: 88



Цитата
после того как пройдет год сбора логов влезут ли все они в память?!


Если много человек лучше не надо, если не хочешь StackOverflow. Надо уложиться по-моему в 64 КБайта.


--------------------
Слава Україні.
PM   Вверх
Albinos_x
Дата 13.6.2004, 14:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 26
Всего: 108



Полностью согласен с Vex.

Сам посчитай, что при твоих данных, только количество просматриваемых страниц будет 1250. Следовательно, в день это будет собирать, приблизительно, 320000 байт (минимум).
А в год !!!......111,39 мешка (если не висакосный). А если если ещё добавить инфу о 50 посетителях!!!

Влезть-то, влезет, но....





--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
<Spawn>
Дата 13.6.2004, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: 44
Всего: 64



Даже если их будет много, то зачем из все в память то записывать? Можно ведь по частям файл читать. Да и вообще для такой затеи я бы маленькую базу сделал. При более менее правильной нормализации таблиц, у тебя и места вся инфа занимать меньше будет.


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
Cashey
Дата 13.6.2004, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бессмертный
****


Профиль
Группа: Завсегдатай
Сообщений: 3441
Регистрация: 13.11.2002
Где: в столице

Репутация: 2
Всего: 60



Полностью согласен с <Spawn>, такие вещи надо хранить в базе, и если нужно быстро запросом вытащить данные по конкретному (или всем) посетителям (ведь не нужно же обязательно хранить в памяти данные о пользователи, которйы сейчас не в сети)


--------------------
библия учит любить ближнего, а камасутра обучает как именно
PM Jabber   Вверх
Albinos_x
Дата 13.6.2004, 15:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 26
Всего: 108



Так же согласен. Необходимое можно подгружать, по вызову, из базы данных, где всё и хранить. Уж 200 мешков для этой цели на винте можно выделить.


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
x77
Дата 13.6.2004, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: 19
Всего: 22



насчёт базы - не уверен. работать с базой через инет - то ещё удовольствие. и далеко не факт, что провайдер откроет у себя нужный порт, как правило, это не делается. т.е. по любому придётся организовывать репликацию. причём, удалённую. и ради чего - двух таблиц? я бы не стал.

просто клал бы всё это в типизованный файл, организовал по нему поиск, выборку с фильтром и т.д.


--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
Albinos_x
Дата 13.6.2004, 16:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 26
Всего: 108



Тоже вариант.


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
z-END
Дата 13.6.2004, 17:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прафесар™
****


Профиль
Группа: Комодератор
Сообщений: 3014
Регистрация: 13.3.2003
Где: Венья, Пиетари

Репутация: 11
Всего: 102



Всем огромное спасбо. начет БД я тоже против, и дело не в том что сеть, просто для ее работы нужна BDE а меня это по многим причинам неустраивает, а вот загружать только тот кусок логов, который нужен, это хорошая идея.. так наверно и поступлю.


--------------------
Каждый чилавек пасвоему праф...а памоему НЕТ! 

PM WWW ICQ   Вверх
<Spawn>
Дата 13.6.2004, 17:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: 44
Всего: 64



nJIaKca.spb Кроме БДЕ много чего еще есть smile.gif И необязательно именно через сеть работать с базой, можно копировать файло на локал и оттуда юзать, ты же все равно собирался все логи на комп перегонять и будет тебе более компантное хранение + быстрый способ доступа к нужным данным с небольшими затратами памяти


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
z-END
Дата 13.6.2004, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прафесар™
****


Профиль
Группа: Комодератор
Сообщений: 3014
Регистрация: 13.3.2003
Где: Венья, Пиетари

Репутация: 11
Всего: 102



<Spawn> я чесно говоря кроме BDE ничего и незнаю withstupid.gif да и вообще в БД несилен, так что делать буду таким способом:
1. скачать логи
2. опередлить нужный блок данных (например статистику посещений за январь)
3. считать из логов данные удовлетворяющие п.2
...
так вроде все должно работать и "влезть" в память должно.


--------------------
Каждый чилавек пасвоему праф...а памоему НЕТ! 

PM WWW ICQ   Вверх
x77
Дата 13.6.2004, 18:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: 19
Всего: 22



nJIaKca.spb, я бы просто сделал типизованный файл. получал очередную порцию логов и добавлял в него. а потом пробегал через тот же TFileStream, например, и начитывал в динамический массив того же типа, что файл, нужные записи.



--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
z-END
Дата 13.6.2004, 22:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прафесар™
****


Профиль
Группа: Комодератор
Сообщений: 3014
Регистрация: 13.3.2003
Где: Венья, Пиетари

Репутация: 11
Всего: 102



x77 тоесть предлагаешь файлы которые я скачиваю(visitors.log, pages.log и т.п.) конвертировать в типизированный под мой пост №1, и работать через него?
а есть ли смысл если
Цитата
procedure OpenLog (ADir: String);
делает ето сразу из логов (конвертирует Apache и моих скриптов логи) в динамический массив. если так будет быстрее работать, тогда стоит. A будет ли?!


--------------------
Каждый чилавек пасвоему праф...а памоему НЕТ! 

PM WWW ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0557 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.