Deamon Client + Server на PHP !!!!

StUV

Rotaredom
qazaqq
только не совсем понятно
1. зачем нужен mail process ?
2. для чего клиент/сервер форкать из main, если их можно последовательно стартануть ручками
3. в этом коде так и нет представления о клиент-серверном приложении (ну да ладно... называй как хочешь =))

1) Пока не знаю как передать значение переменной из сервера клиенту и наоборот....
клиент с сервером могут обмениваться данными через шаред мемори (можно тупо файлами на диске) или могут общаться по некоторому существующему протоколу (напр. каждый слушает другого на некотором порту и соответственно так же посылает сигналы)

3) Добиться всетаки, чтоб по завершении Main processa падали и потомки...
можно периодичеки обновлять флаг состояния работы - если файл не обновился через какое-то время (или сигнал состояния не пришел) - чайлды сами отваливаются

-~{}~ 02.05.08 10:23:

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

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

qazaqq

Новичок
StUV
1. зачем нужен mail process ?
Main process нужен для отслеживания состояния потомков, кажется я писал!!!!
2. для чего клиент/сервер форкать из main, если их можно последовательно стартануть ручками
Изначально, я надеялся, что если форкать процессы, то между ними проще сделать канал взаимодествия, для обмена данными(переменными)... Конечно проще запустить по очереди серверное приложения, а потом клиентское и передавать через файл, но это как то криво...
могут общаться по некоторому существующему протоколу (напр. каждый слушает другого на некотором порту и соответственно так же посылает сигналы)
А можно пример, как это????
могут обмениваться данными через шаред мемори
А это как...????
тебе действительно надо, чтобы клиент и сервер обладали в принципе потенциально идентичной функциональностью?
Какая схожая функиональность, то клиентская часть, а то серверная, что тут схожего???????????

Ребята давайте читать сначала, что требуется сделать, а потом давать советы, а то мы говорим на разных языках...!

Еще раз говорю, необходимо, чтоб демон, брал данные с сервера через сокет(то есть одно сокет приложение, асинхронный режим), обрабатывал и тут же передавал данные клиенту и принимал команды от него(то есть второе сокет приложение, асинхронный режим)!!!!
А вообще я выкладывал файл, там коротко и понятно все!!!

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

Akick

Новичок
Опускаю все вопросы, которые касаются технической реализации. Тут ничего сложного нет.
Очень хочу понять роли, которые должны выполнять сервер и клиент. Ибо в данный момент я не пойму - что должен делать клиент и какие мифические команды он должен отдавать серверу.

Как мне кажется, что-то у Вас не так с логикой самой системы...

-~{}~ 02.05.08 12:09:

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

StUV

Rotaredom
Какая схожая функиональность, то клиентская часть, а то серверная, что тут схожего???????????
почитай что ли побольше про fork, как оно работает... - ты кажется в принципе не врубаешься в те технологии, которые пытаешься использовать...

зы:
и кричи поменьше - от этого никакой пользы, только вред
 

dimagolov

Новичок
qazaqq, скажи, а что, твой VoIP Server кидает статистику на какой-то отфанарный порт локалхоста (что наводит на мысль, что тот сервер програмный) вообще не разбирая слушает там кто-то или нет? или как? Или он наоборот слушает какой-то порт и отдает инфу тому кто приконектился?

Кстати, а что за VoIP Server? Не верю, что для него совсем нет решений для мониторинга статистики.

Начни с того, чтобы реализовать простое - получать данные от VoIP Server-а и писать их хотя бы в файл.
 

qazaqq

Новичок
Какие странные бывают люди.... Вроди зашел на форум по PHP, а не на форум, где поболтать о чем-нибудь, задал вопрос, повторил его 5 раз более подробно, даже нарисовал и расписал пункты, что к чему и зачем http://drop.io/laccr8b Но нет, всем просто интересно, а чтож оно будет то на самом деле, а зачем ему это.....

Это было лирическое вступление))))

Теперь по существу, начнем с описания общей части:
1. Есть VoIP(программная АТС)-некий отдельный сервер. На этой АТС есть так называемый CLI - Command line interface. Этот CLI вызватся из консоли и служит для управления, конфигурации, а также вывода служебной информации в реальном р.времени(кто куда звонит, какой SIP абонент зарегистрировался и т.д.) Также для приложений, разработок, удаленного мониторинга предусмотрен менеджер(назовем его Server ATS), который на localhost постоянно слушает порт напр. 10000! Если подсоединился клиент и авторизировался, Server ATS(как и в случае CLI) начинает выплевывать клиенту(назовем его Client ATS), что происходит в данный момент на АТС, без буфферизации, в р.режиме времени, а также принимает команды для управления, например позвонить куда-то, вывести статус SIP абонента, показать зарегистрированных, отбить абонента и т.д. Забегая на перед скажу, что последовательное звено-что я хочу сделать нужно, чтоб анализировать, отсеять не нужные данные, сформировать массив состояний абонентов, процессов, а также отправлять и принимать упрощенные команды(например XML формат) от конечного клиента(Flash или Windows)

2. А вот описание собственно нашего демона:
Это процесс(процессы) состоящий из Client ATS и Server Client, где Client ATS - был рассмотрен выще(для общения с АТС), а Server Client - служит для возможности подключения конечного пользователя, то есть Flash или Windows. Таким образом мне нужно реализовать одновременно в одном демоне 2 процесса, это и клиент Client ATS и сервер Server Client....
Назначение демона я описал выше. Этот демон предполагается, что будет запущщен постоянно, следовательно он будет поддерживать постоянный конект с АТС, хотя это можно делать только когда подключен конечный клиент, так как буферизироватиь и логгировать ничего не нужно... Процесс Client ATS должен соединяться посредством сокета на localhost: 10000. Server Client - сокет сервер(пока для одного клиента, например Flash), слушающий порт 20000, принимающий команды для передачи Server Client и передающий XML конечному клиенту Flash

3. Описание конечного клиента (Flash)
Думаю тут и так должно быть многое понятно, но всеже:
Клиент Flash представляет собой некую консоль управления(напимер вызвать какого то абонента, отбить и т.д.) и отображения статуса абонентов АТС! Обновление данных предполагается почти без задержки, в р.режиме времени!
Клиент Flash устанавливает постоянное соединение с Server Client нашего демона и выполняет запросы и принимает статус, отображая это в графическом виде....

Не о какой статистике речь не идет, прошу прощения если где-то упомянул, то было в кач. примера)))

dimagolov
Начни с того, чтобы реализовать простое - получать данные от VoIP Server-а и писать их хотя бы в файл.
Я уже написал по отдельности Client ATS и Server Client!
Теперь думаю какже между ними(процессами) передавать переменные или значения.....

Ответа НЕТ....
 

HraKK

Мудак
Команда форума
qazaqq
А ты думал мы тут сидим и ждем кому бы помочь решить его задачу. А попку подтереть не надо?
 

qazaqq

Новичок
Уважаемые ГОСПОДА, кому нечего сказать по теме, - не говорите ничего, не засоряйте форум! Спасибо за понимание!
 

Wicked

Новичок
Я уже написал по отдельности Client ATS и Server Client!
Теперь думаю какже между ними(процессами) передавать переменные или значения.....
если ты сделаешь это с использованием неблокирующих сокетовв одном процессе, то передавать между ними значения как угодно - у них будет общее адресное пространство, общие переменные,...

если делать их по отдельности, то
выбор примерно такой:
опять же сокеты - но получится ровно то же, что и в случае выше
shared memory/бд/файлы/... + оповещение сигналами
messaging service
 

qazaqq

Новичок
Wicked
Спасибо, почитаю про неблокирующие сокеты, если кто может дать ссылку или пример где создается 2 или более сокета и как при этом с ними работать(когда не один), буду очень благодарен
 

qazaqq

Новичок
Wicked
Спасибо, отличный пример, замечательно подходит для чата, там понятно используется ф-я- Socket_select, так как там создан только сокет для сервера. То есть клиенты конектятся и функция перекльчает чтение с одного сокета на другой...
Но мне то нужно создать еще и сокет клиента.. Как в этом случае использовать эту ф-ю??? Я не соображаю, уже точно каша в голове...
PHP:
$add_mang = '10.65.0.1';
$port_man = 10000;

if (($sock_clnt = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) < 0) {
   echo "socket_create() failed: reason: " . socket_strerror($sock_clnt) . "\n";
}

$result = socket_connect($sock_clnt, $add_mang, $port_man);
if ($result === false) {
 echo "socket_connect() failed.\nReason: ($result) " . socket_strerror(socket_last_error($sock_clnt)) . "\n";
}else{
$sData = socket_read($sock_clnt, 4096);
}
Может добавить этот сокет в тот массив клиентов, а как понять что от кого пришло, там есть Resourse id, а тут то его нет. Или если нет, значит это данные от сервера АТС, а как ему передать сообщение, если у него нет идентификатора?:(

Каша, сплошная каша...
 
Сверху