![]() |
|
Модераторы: korob2001, ginnie |
![]()
|
|
| Wowa |
|
|||
|
Эксперт Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: нет Всего: 290 |
Мне нужно написать программу, которая постоянно подключалась бы к удаленной БД, получала данные и обрабатывали бы дальше, если в БД есть новые записи.
Как реализовать, чтобы программа вечно работала? Т.е. чтобы процесс не умирал? |
|||
|
||||
| Kannabismus |
|
|||
|
Тим Тоуди Профиль Группа: Участник Сообщений: 45 Регистрация: 20.11.2005 Репутация: 1 Всего: 2 |
Для отсоединения от терминала можно юзать Proc::Daemon для *nix и PDK от Activestate под windows. Это сообщение отредактировал(а) Kannabismus - 7.12.2005, 00:11 |
|||
|
||||
| Sadok |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 2.11.2004 Репутация: 1 Всего: 2 |
Kannabismus
100% загрузка компа в итоге |
|||
|
||||
| Kannabismus |
|
|||
|
Тим Тоуди Профиль Группа: Участник Сообщений: 45 Регистрация: 20.11.2005 Репутация: 1 Всего: 2 |
Необязательно, это зависит от кода в while.
Это сообщение отредактировал(а) Kannabismus - 7.12.2005, 16:15 |
|||
|
||||
| Sadok |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 2.11.2004 Репутация: 1 Всего: 2 |
Kannabismus
# perl -e 'while (1) { print "1\n";};' и смотрим в top -tI, как плавно perl и sshd (я через терминал) хором отжирают ресурсы. Без sleep() не обойтись |
|||
|
||||
| sharq |
|
|||
![]() Perl Liker ![]() ![]() Профиль Группа: Участник Сообщений: 841 Регистрация: 13.12.2004 Где: Ростов-на-Дону Репутация: 23 Всего: 28 |
Wowa можно сделать просто скрипт, который выполнил свои действия и выгрузился, но он будет запускаться по cron'у через определенное время. Только нужно будет при повторном запуске проверять - не работает ли данный скрипт (если он не успел выполнить предписанные действия).
Плюс: загрузка процессора будет меньше. Это сообщение отредактировал(а) sharq - 9.12.2005, 15:51 -------------------- [color=gray]There's More Than One Way To Do It[/color] |
|||
|
||||
| Kiber_rat |
|
||||||
![]() MACMANIAC ![]() ![]() Профиль Группа: Участник Сообщений: 276 Регистрация: 18.4.2002 Где: Ashdod, Israel Репутация: 7 Всего: 9 |
Wowa Если речь иде о *nix, то тебе можно написать демон (подробности можно прочитать в главе 17.17 Perl Cookbook), хотя то что предложил sharq проще. Пишешь скрипт который обращается к БД, если данные есть - что-то с ними делает, если нет - умирает. Запихиваешь его в cron и вызываешь с нужной периодичностью. Если каждую минуту достаточно, то решение тебя устроит, если надо чаще, то можно в самом скрипте сделать цикл со слипом перед каждой итерацией, используя Time::HiRes можно хоть каждую сотую секунды проверять наличие данных,а запускать скрипт с &.
Например так:
Это сообщение отредактировал(а) Kiber_rat - 9.12.2005, 19:17 -------------------- Best regards! @..@_____Ku6ep =*=______\______KPbIC
|
||||||
|
|||||||
| Usya |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 154 Регистрация: 7.6.2005 Репутация: нет Всего: нет |
Kiber_rat правильно сказал, что все зависит от частоты обращений, хотя на счет каждой минуты м/б погорячился. Это возможно, но следует учесть, что
http://lib.protoplex.ru/lib_show/45.html --------------------
Я не волшебник, я только учусь... |
|||
|
||||
| Kiber_rat |
|
|||
![]() MACMANIAC ![]() ![]() Профиль Группа: Участник Сообщений: 276 Регистрация: 18.4.2002 Где: Ashdod, Israel Репутация: 7 Всего: 9 |
Usya информация безусловно полезная, но
-------------------- Best regards! @..@_____Ku6ep =*=______\______KPbIC
|
|||
|
||||
| Wowa |
|
|||
|
Эксперт Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: нет Всего: 290 |
Хм.. Ну запускать его через веб-сервер смысла вроде нет. Мне нужно запустить скрипт или один раз в ввиде демона или с некой регулярностью через Крон. Чаще, чем раз в минуты смысла делать нет. Хватит вполне запуска одного раза в минуту. Я боюсь просто, что скрипт не успеет справиться за минуту с работой, а через крон уже будет запускать след. экземплят скрипт, хотя конечно можно создавать какой-нибудь .lock файл. Для блокировки след. запуска, если этот еще не отработал. Это вроде хороший вариант. Второй вариант. Это все же организовать демон. Который проверяет таблицу на удаленном сервере. Если в ней есть новые записи, то он начинает их обрабатывать. Или нет,то ждет некоторое время и снова проверяет таблицу на удаленном сервере. И так по кругу... Внимание вопрос! Я склоняюсь к реализации через КРОН больше. |
|||
|
||||
| Wowa |
|
|||
|
Эксперт Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: нет Всего: 290 |
Тут еще кое-что по этой теме: http://forum.vingrad.ru/index.php?act=ST&f...=73854&unread=1
О том, что выбрать лучше для этого задачи Perl или PHP ? |
|||
|
||||
| sharq |
|
||||||||
![]() Perl Liker ![]() ![]() Профиль Группа: Участник Сообщений: 841 Регистрация: 13.12.2004 Где: Ростов-на-Дону Репутация: 23 Всего: 28 |
Wowa я считаю, что лучше это организовать через cron, и ресурсов будет меньше тратиться и проще будет реализовать.
Именно так. Или проверять процессы на наличие твоего скрипта.
Этот вариант тоже хорош, но у тебя будет
А это будет сильно грузить процессор. Хотя если это не проблема, то можно и демона создать.
Определенно perl! -------------------- [color=gray]There's More Than One Way To Do It[/color] |
||||||||
|
|||||||||
| Wowa |
|
|||
|
Эксперт Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: нет Всего: 290 |
Почему? |
|||
|
||||
| sharq |
|
|||
![]() Perl Liker ![]() ![]() Профиль Группа: Участник Сообщений: 841 Регистрация: 13.12.2004 Где: Ростов-на-Дону Репутация: 23 Всего: 28 |
Wowa
Потому что я люблю и пишу на perl. Сильный аргумент? -------------------- [color=gray]There's More Than One Way To Do It[/color] |
|||
|
||||
| Wowa |
|
|||
|
Эксперт Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: нет Всего: 290 |
больше похоже на оффтоп ;) |
|||
|
||||
| Kiber_rat |
|
||||
![]() MACMANIAC ![]() ![]() Профиль Группа: Участник Сообщений: 276 Регистрация: 18.4.2002 Где: Ashdod, Israel Репутация: 7 Всего: 9 |
Так, выскажусь по всем пунктам. Во первых, perl лучше потому, что PHP это WEB ориентированный язык и хорош только для WEB, для системных скриптов намного лучше perl и по скорости и по гибкости и по степени интеграции с системой. Далее, что касается cron или demon. Я за demon, потому что это правильнее. Объясню почему. Во первых крон это стороннее приложение и им управляешь не ты а админ машины, в случае если демон крона отвалится твой скрипт не отработает, в случае перевода системного времени он тоже может проглючить. Демон - твое приложение, ты его полностью контролируешь, он грузит систему не больше чем твой скрипт в кроне, а то и меньше. Аргументы привел Usya. При запуске через крон у тебя каждый раз будет запускаться интерпритатор в котором уже будет выполнятся твой скрипт, в демон будет висеть в памяти постоянно и дополнительных накладных расходов не потребует. Главное поставить sleep
-------------------- Best regards! @..@_____Ku6ep =*=______\______KPbIC
|
||||
|
|||||
| Usya |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 154 Регистрация: 7.6.2005 Репутация: нет Всего: нет |
Wowa, на счет того, что лучше для этого задачи Perl или PHP - то, в чем лучше разбираешься
Кстати, и еще: Kiber_rat привел ряд аргументов в пользу демона. Единственное, надо учесть, что у некоторых хостеров есть ограничение на время выполнения скриптов. А в общем, если скрипт достаточно часто запускать, как ты пишешь (раз в минуту), то я тоже против cron-а, хотя через cron мне кажется проще (возможно потому что демонов не создавал - не было необходимости). Kiber_rat
Я привел цитату только для того, чтобы пояснить, что частый запуск Perl-овских скриптов загружает сервер (обрезать статью сильно не стал, т.к. там было еще немного полезной инфы). Кстати, на счет поработать с FastCGI - не на всех серваках есть... Честно говоря, я и сам с ним не работал... Хотел, да немного обламался, как раз именно по приведенной выше причине... --------------------
Я не волшебник, я только учусь... |
|||
|
||||
| Wowa |
|
|||
|
Эксперт Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: нет Всего: 290 |
Проект масшатбный, поэтому сервер для него естественно свой - отдельный.
|
|||
|
||||
![]()
|
| Правила форума "Perl" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |