2009-02-08 5 views
0

Мне нужно реализовать демон, который должен извлекать данные из базы данных, загружать данные в память и в соответствии с этими данными выполнять такие действия, как отправка электронных писем или запись/обновление файлов. Эти действия необходимо выполнять каждые 30 минут.Должен ли я использовать C++ или скрипт для процесса демона?

Я действительно не знаю, что решать. Скомпилируйте C++-программу, которая будет выполнять задачу или использовать скрипты и различные инструменты Linux (sed/awk).

Каким будет самый быстрый способ сделать это? Чтобы сохранить CPU и память.

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

Как вы думаете?

ответ

5

Используйте cron (1), чтобы начать свою программу каждые 30 минут.

Так называемые языки сценариев, безусловно, позволят вам написать свою программу быстрее, чем C++. Но делать это с помощью shell и sed an/or awk, в то время как это определенно возможно, очень сложно, когда вам приходится справляться со всеми угловыми случаями, особенно в отношении вылетающих строк (думаю, «&» «s»; »...).

Предлагаю вам перейти с более полнофункциональным «скриптовым» языком, таким как Perl или Python.

+0

Python !!!!!!!!!! –

2

Почему вы пытаетесь сохранить CPU & Память? Вы абсолютно уверены, что это реальное требование (или просто «преждевременная оптимизация»)?

Если производительность не является критичной, нет абсолютно никаких оснований кодировать такую ​​вещь на C++. Кажется, это своего рода процесс обслуживания (правда?). Я говорю, пишу его на языке сценария самого высокого уровня, который вы знаете. Python или PHP кажутся хорошими кандидатами. Даже если вы не знаете эти языки, вам все равно потребуется меньше времени, чтобы познакомиться с ними, чем вам понадобится сделать это на C++.

0

Я бы пошел с реализацией Python/Perl/Ruby с записью cron, чтобы запланировать запуск скрипта каждые 30 минут.

Если производительность становится проблемой, вы можете добавить столбец к вам, который отслеживает последний раз, когда вы выполняли расчеты для учетной записи, а затем разбивали обработку своих записей на группы по 2 или 3 или 4, запуская их когда-либо 15, 10, 5 минут соответственно.

Если после разделения ваших вычислений на группы, у вас все еще есть требования к производительности, тогда рассмотрим C++/C/Java.

Я бы все же использовал это, используя cron. Не нужно быть демоном, если вы не предоставляете услуги по требованию.