Deamon Client + Server на PHP !!!!

qazaqq

Новичок
Deamon Client + Server на PHP !!!!

В инете видел много примеров либо клиента как процесс либо сервера как процесс... А мне необходимо, чтоб
процесс был и клиентом и сервером одновременно...
Ребята подскажите как пишется такой демон на PHP ?
Или кто может покажите примерный код или алгоритм, как в бесконечном цикле сделать Client + Server (Хотя бы для одного клиента)...
Зараннее ОГРОМНОЕ СПАСИБО!!!
 

qazaqq

Новичок
СПАСИБО конечно... НО таких примеров в сети очень много, меня ИНТЕРЕСУЕТ нечто другое!!!!!! А именно - ДЕМОН(процесс), который работает как прокси, с одной стороны соединен с сервером(192.168.0.1 порт 40000) как клиент, а с другой стороны как сервер (127.0.0.1 порт 20000) для клиента...
То есть этот процесс принимает данные с сервера, упорядочивает, сортирует и уже потом передает понятную инфу клиенту и наоборот принимает от клиента и передает на сервер...!!!!
 

Akick

Новичок
Автор оригинала: qazaqq
Чтот не то... Не нашел я решения....((((
Похоже у Вас каша сейчас в голове.
Попробуйте всё же сначала понять что такое демон, чем он отличается от простого скрипта ;о)
Псле этого я всё же порекомендовал просмотреть первый указанный мною скрипт, после этого внимательно перечитать раздел мана по функциям pcntl*, особенно обратить внимание на комментарии.

PS. Как мне подсказывает мой личный опыт - после этого у вас очень много вопросов отпадёт, а те что появятся вполне будут решаемы поиском по форуму ;о)
 

qazaqq

Новичок
Akick

Вот более простой вариант интерпретации вопроса:

1) У меня есть два демона, именно 2 ДЕМОНА, а не скрипта!!!
2) Один из них сервер, а второй - клиент
---------------------------------------------------------------------------------
Это замечательно, они корректно работают по отдельности...!
---------------------------------------------------------------------------------
3) Мне нужно их объеденить в один демон(процесс)
4) Как это можно сделать...????
 

cDLEON

Онанист РНРСlub
Тебе дали пачку ключевых слов.
По этим ключевым словам можно найти целую пачку информации.
 

zerkms

TDD infected
Команда форума
По этим ключевым словам можно найти целую пачку информации.
ему не нужна информация, ему нужно готовое решение, на блюдечке. неужели не ясно?
 

qazaqq

Новичок
Вот пытаюсь писать....
---------------------------------------------------------------------------------
PHP:
#!/usr/bin/php -q
<?php
error_reporting(E_ALL);
set_time_limit(0);
ob_implicit_flush();

$add_serv = '10.65.1.88';
$add_mang = '127.0.0.1';
$port_man = 50000;
$port_ser = 10000;

# --------------------  Создаем ДВА сокета  ------------------------------
if (($sock_serv = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) < 0) {
   echo "socket_create() failed: reason: " . socket_strerror($sock_serv) . "\n";
}
if (($sock_clnt = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) < 0) {
   echo "socket_create() failed: reason: " . socket_strerror($sock_clnt) . "\n";
}
# ------------  Привязываем адрес (10.65.1.88) к порту (10000) -----------
if (($ret_serv = socket_bind($sock_serv, $add_serv, $port_ser)) < 0) {
   echo "socket_bind() failed: reason: " . socket_strerror($ret_serv) . "\n";
}
# ------------  Прослушиваем сокет -----------
if (($ret_serv = socket_listen($sock_serv, 5)) < 0) {
   echo "socket_listen() failed: reason: " . socket_strerror($ret_serv) . "\n";
}
# --------------- Основной цикл ------------------------------------------
do {

   if (($msgsock = socket_accept($sock_serv)) < 0) {
       echo "socket_accept() failed: reason: " . socket_strerror($msgsock) . "\n";
       break;
   }
   /* Send instructions. */
   $msg = "\nWelcome to the PHP Test Server. \n";

   socket_write($msgsock, $msg, strlen($msg));


# --------------------- Client -------------------------------------------
$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";
}

  do {
   	
 # --------------------- Client -------------------------------------------
 $sData = socket_read($sock_clnt, 4096);

//        Обрабатываем данные от сервера        //


 # --------------------- Client -------------------------------------------
      if (false === ($buf = socket_read($msgsock, 2048, PHP_NORMAL_READ))) {
           echo "socket_read() failed: reason: " . socket_strerror($ret_serv) . "\n";
           break 2;
       }
       if (!$buf = trim($buf)) {
           continue;
       }
       if ($buf == 'quit') {
           break;
       }
       if ($buf == 'exit') {
           socket_close($msgsock);
           break 2;
       }
       $talkback = "PHP: You said '$buf'.\n";
       socket_write($msgsock, $talkback, strlen($talkback));
       echo "$buf\n";
   } while (true);
   socket_close($msgsock);
} while (true);

socket_close($sock_clnt);
socket_close($sock_serv);
?>
----------------------------------------------------------------------------------
В результате если обрабатывается клиент, теряется обработка сервера....(((((((
 

Akick

Новичок
А я Демона невижу... Просто программа в бесконечном цикле...
Грусна... А так интересно топик начинался ((((
 

qazaqq

Новичок
Akick

ЧИТАЛ Я ПРО pcntl, хорошая штука межпроцессорные обмены, но применительно к моей задаче, не совсем представляю как...
Хочется что то попроще, понадежнее, без лишних заморочек...
Даже не нужно многопользовательский режим...

И что в вашем понимании Демон???

-~{}~ 28.04.08 17:41:

Есть рабочий скрипт, но написан на перле... Но там очень много лишнего, ненужного...
Вот поэтому и стоит задача...

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

Wicked

Новичок
а с какой целью интересуетесь? что за задачу решаете с помощью такого "сервероклиента"?
 

qazaqq

Новичок
Wicked

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

StUV

Rotaredom
qazaqq
ага
кажется начинает доходить...
чем не устраивает фоновая в кроне аггрегация собранных данных с нормальной веб-мордой на пхп/апач/бд - вместо самописного тяжелого велосипеда ?..
 

fast2111

Новичок
Во-во.

Данные от демона должны накапливаться, для их дальнейшей обработки?

Или все таки нужен просто адаптер (не демон, просто скрипт) для представления данных в уже преобразованном виде?
 
Сверху