The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"C или С++, под FreeBSD"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [ Отслеживать ]

"C или С++, под FreeBSD"  +/
Сообщение от sav_83 (ok) on 03-Окт-09, 14:22 
Здравствуйте.
Прошу извинить если повторяюсь или не там пишу.

Есть скрипт, писаный на PERL, в задачи которого входит с периодичностью считывать данные с log файла, вставлять их в БД MySQL и считанное удалять.
Если желание написать службу, которая бы:
1. слушала(перехватывала) поток и писала бы данные в БД;
2. писался/не писалcя log, в зависимости от заданных параметров в другом файле;
3. работал быстро. Скрипт может работать определенные секунды, а может поначалу медленно, но а потом время работы постепенно возрастает.
4. работал в "реальном времени" а не с периодичностью.

Вся загвоздка в том, ни разу такого не писал и не знаю ни на чем писать ни вообще с чего начать. Может есть где-нить дока какая по написанию служб вообще, короче нужна консультация и направление на "путь истинный"...
На счет выбора языка программирования. Где-то год назад знакомый сказал что С++ работает быстрее, месяц - два назад услышал опровержение, что все наоборот. Вот теперь и не знаю какой выбрать.
Высказать мнение | Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "C или С++, под FreeBSD"  +/
Сообщение от Аноним (??) on 03-Окт-09, 17:31 
>Здравствуйте.

Здравствуйте.

>Вся загвоздка в том, ни разу такого не писал и не знаю
>ни на чем писать ни вообще с чего начать. Может есть
>где-нить дока какая по написанию служб вообще, короче нужна консультация и
>направление на "путь истинный"...

Если скрипт на перле писали вы, то будет немного проще. Почитайте книги по программированию в Unix/Linux. Могу порекомендовать "UNIX. Профессиональное программирование" Стивенса и Раго.

>На счет выбора языка программирования. Где-то год назад знакомый сказал что С++
>работает быстрее, месяц - два назад услышал опровержение, что все наоборот.
>Вот теперь и не знаю какой выбрать.

При сравнении C и C++ разница в скорости будет практически незаметна.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "C или С++, под FreeBSD"  +/
Сообщение от jd (??) on 03-Окт-09, 20:29 
Кто пишет лог в файл, который вы хотите обрабатывать?

А вообще, такие вещи обычно делаются с помощью syslog. И писать ничего не надо - всё уже написано.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "C или С++, под FreeBSD"  +/
Сообщение от angra (ok) on 03-Окт-09, 23:57 
Зачем для такой задачи C/C++? Все делается на perl в два счета и работает с той же скоростью что на сях и даже асме. Попробуйте немного подумать и может быть сами поймете почему. А начинать надо с четкой постановки задачи.
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "C или С++, под FreeBSD"  +/
Сообщение от vitek (??) on 05-Окт-09, 02:31 
есть такой вариант:
вместо лог-файла создаёте именованный канал с таким же именем (см. man mknod или man mkfifo)
после чего создаёте процесс-читатель, который заносит данные в б/д или ещё куда.
процессом-писатель при этом и не догадывается, что пишет не в обычный файл.
также man pipe, man tee и т.д. могут помочь с этим
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "C или С++, под FreeBSD"  +/
Сообщение от ктото on 05-Окт-09, 07:52 
Есть минус - при отваливании процесса-читателя процесс-писатель получает SIGPIPE.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "C или С++, под FreeBSD"  +/
Сообщение от vitek (??) on 05-Окт-09, 14:47 
>Есть минус - при отваливании процесса-читателя процесс-писатель получает SIGPIPE.

минусы есть всегда. значит надо писать так, чтобы не отваливался. :-D
если применять методы, как и при программировании серверов (листенеры, процессы, потоки, ipc), то получится если и не супер-надёжно, то уж приемлемо точно.

есть и другие варианты.
если бы не указанный в топике бзд, можно было бы предложить Inotify http://ru.wikipedia.org/wiki/Inotify
также есть вариант с fuse. написать для него фс не так сложно, как кажется.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

7. "C или С++, под FreeBSD"  +/
Сообщение от vitek (??) on 05-Окт-09, 17:30 
ах да.
может там вообще хватит что-то типа такого:
tail -f <log_file> | <своё_скрипт_записи_в_субд>
и никакого С ;-)
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

8. "C или С++, под FreeBSD"  +/
Сообщение от аноним on 05-Окт-09, 17:50 
> Где-то год назад знакомый сказал что С++ работает быстрее, месяц - два назад услышал опровержение, что все наоборот.

C++ разумеется быстрее. Только толку от этого, если большую часть работы будет все равно выполнять mysql, а приложение будет чуть более чем ве время висеть в ожидании данных? А разработка на C++ медленнее, особенно если вы сами не понимаете что вам нужно. Поэтому оставьте на perl + прикрутите Proc::Daemon и все остальное чего не хватает по вкусу.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру