The OpenNET Project / Index page

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

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Связать два и более процессов FIFO/pipe ? На perl"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Связать два и более процессов FIFO/pipe ? На perl" 
Сообщение от exec Искать по авторуВ закладки(ok) on 07-Ноя-05, 21:24  (MSK)
Имеем:
1. Есть cgi скрипт которому дают то, что нужно скинуть в табличку бд MySQL;
2. Есть несколько процессов fork()-нутых которые берут данные из таблички бд MySQL и передают зацепленным к ним клиентам;

Суть задачи:
Необходимо сделать некий обходной канал, по которому cgi скрипт может сообщить fork()-нутым процессам, что поступили новые данные.

Упрощённо, сейчас в коде всё выглядит так:

#--- ST --- fork()-нутый процесс -------
$inital_id=0;
while (1){
$inital_id=&SkazocnikDlaKlienta($inital_id);
sleep(10);
} # while (1)

sub SkazocnikDlaKlienta(){
$last_id=$_[0];
# >>> здесь бы проверить есть ли данные ещё не обращаясь к БД, а то обращений на деле очень много и муторных, если данных нет то просто пропустить выборку данных
$s="SELECT id,glawata FROM glawtable WHERE id>$last_id ORDER BY id";
$strez = $rez=$dbh->Query($s);
if ($strez !=0){
$fn=1;
for ($n=0; $fn ==1; $n++){
($i_id, $i_glawata)=$rez->FetchRow;
if ($i_id >0){
$last_id=$i_id;
print "$i_glawata\n"; # условно (здесь выдать данные клиенту)
}else{$fn=0;}
} # for ($n=0; $fn ==1; $n++)
} # if ($strez !=0)
return $last_id;
} # sub SkazocnikDlaKlienta()
#--- EN --- fork()-нутый процесс -------

#--- ST --- добавлятор в cgi -------
sub AddData(){
$inglawdata=$_[0];
$save_data=$dbh->quote($inglawdata);
$s="INSERT INTO glawtable VALUES ('', $save_data)";
if ($dbh->Query($s) !=0){
# >>> в этом месте нужно как-то передать всем форкнутым процессам что данные поступили
} # if ($dbh->Query($s) !=0)
} # sub AddData()
#--- EN --- добавлятор в cgi -------

Конечно, самое замечательное было бы, это не просто не просто сказать форкнутому процессу о поступивших данных, а приказать независимо от его внутреннего цикла выполнить сабу "SkazocnikDlaKlienta()".

Дополнительно:
cgi-шник понятия не имеет есть ли в памати fork()-нутые процессы, на какой они сейчас стадии своего цикла, сколько их в данный момент, и они не его потомки.
Он может знать только то, что я в него прописал (имена таблиц, файлов, и т.п.)


Господа, прошу вашего совета как реализовать связь между процессами в свете изложенного выше?
Прошу дать урывки кода, показать исходники, или подсказать ключевые слова по которым искать.
Важно: что бы это не сильно нагружало процессор, не насиловало диски ([открыть файлы]/[открыть tcp/udp порт (т.е. дыру)] не предлагать).
Если бы это был старый добрый DOS и старый добрый ASM, то сделал бы всё на прерываниях (int XX).

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

 Оглавление

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

1. "Связать два и более процессов FIFO/pipe ? На perl" 
Сообщение от ACCA Искать по авторуВ закладки(ok) on 08-Ноя-05, 09:02  (MSK)
Хоть бы слово про систему сказал, мы бы сориентировались...

man perlipc

Перецепи CGI с БД на сервер приложения, который

1. Имеет сокет в PF_UNIX
2. Складывает полученное оттуда в БД
3. Рассылает клиентам обновления (через потомков)

О FIFO стал бы думать в последнюю очередь.

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

2. "Связать два и более процессов FIFO/pipe ? На perl" 
Сообщение от exec Искать по авторуВ закладки(ok) on 08-Ноя-05, 22:17  (MSK)
>Хоть бы слово про систему сказал, мы бы сориентировались...

Unix-подобные (Линух, Фря...)

Я не сторонник сочетаний windows+интернет в качестве сервера :)

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


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

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ]




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

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