ФорумПрограммированиеPHP для идиотов → Deamon Client + Server на PHP !!!!

Deamon Client + Server на PHP !!!!

  • qazaqq

    Сообщения: 6 Репутация: N Группа: Кто попало

    Spritz 27 апреля 2008 г. 12:27

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

    Сообщения: 446 Репутация: N Группа: Адекваты

    Spritz 27 апреля 2008 г. 12:59, спустя 31 минуту 33 секунды

    while (1) {
    // blah-blah-blah
    }

    :)
  • disc

    Сообщения: 843 Репутация: N Группа: Джедаи

    Spritz 27 апреля 2008 г. 13:44, спустя 45 минут 19 секунд

    qazaqq, почему именно на php решил писать демона? Для того чтоб он работал, скрипты придется висеть в памяти неограниченное кол-во времени, по умолчанию время работы скрипта составляет 30 секунд. Хостер может не позволить тебе изменить это значение, может стоит посмотреть в сторону других языков программирования для решения это задачи, к примеру Java.
  • ghost

    Сообщения: 883 Репутация: N Группа: Джедаи

    Spritz 27 апреля 2008 г. 14:14, спустя 29 минут 41 секунду

    чисто из интереса, поясни плиз, как должна стоять задача, чтоб один процесс был и клиентом, и сервером?
  • qazaqq

    Сообщения: 6 Репутация: N Группа: Кто попало

    Spritz 27 апреля 2008 г. 15:49, спустя 1 час 35 минут 37 секунд

    ghost, Нужен ДЕМОН(процесс), который работает как прокси, с одной стороны соединен с сервером(192.168.0.1 порт 40000) как клиент, а с другой стороны как сервер (127.0.0.1 порт 20000) для клиента…
    То есть этот процесс принимает данные с сервера, упорядочивает, сортирует и уже потом передает понятную инфу клиенту и наоборот принимает от клиента и передает на сервер…!!!!

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

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

  • qazaqq

    Сообщения: 6 Репутация: N Группа: Кто попало

    Spritz 27 апреля 2008 г. 15:53, спустя 3 минуты 19 секунд

    disc,

    1) На PHP есть такая замечательная штука как set_time_limit(0);
    2) Сервер собственно мой, он не в глобальной сети
    3) На PHP как то проще работать, много функций, да и знаю его лучше…
    4) Пробовал и хотел написать на си, но понял, что не обладаю я этим языком…
  • disc

    Сообщения: 843 Репутация: N Группа: Джедаи

    Spritz 27 апреля 2008 г. 16:30, спустя 37 минут 41 секунду

    qazaqq,
    1) спасибо что открыл мне глаза на функцию set_time_limit() :)
    2)
    На PHP как то проще работать, много функций, да и знаю его лучше…
    и
    4) Как это можно сделать…????
    :) неувязочка :)
    3) Советую все таки ковырять более заточеный под это язык
  • ghost

    Сообщения: 883 Репутация: N Группа: Джедаи

    Spritz 27 апреля 2008 г. 16:31, спустя 45 секунд

    все равно не понимаю - в чем состоит неудобство при использовании именно двух демонов?
  • ghost

    Сообщения: 883 Репутация: N Группа: Джедаи

    Spritz 27 апреля 2008 г. 17:33, спустя 1 час 1 минуту 30 секунд

    да, кстати, http://www.phpinside.ru/?q=node/668 - ознакомься :)
  • qazaqq

    Сообщения: 6 Репутация: N Группа: Кто попало

    Spritz 30 апреля 2008 г. 4:34, спустя 2 дня 11 часов 1 минуту

    Решил поподробнее написать, что нужно, даже нарисовал…
    кому интересно, можно поглядеть тут:
    http://drop.io/laccr8b
  • md5

    Сообщения: 11949 Репутация: N Группа: в ухо

    Spritz 30 апреля 2008 г. 4:45, спустя 11 минут 6 секунд

    так, а теперь, почему именно php?
    все умрут, а я изумруд
  • qazaqq

    Сообщения: 6 Репутация: N Группа: Кто попало

    Spritz 30 апреля 2008 г. 9:25, спустя 4 часа 40 минут 1 секунду

    md5,
    Любится, нравится, больше понимается….
    Неохота изучать методы другого языка, код хочется скрыть…

    А какие есть предложения в качестве языка???
  • md5

    Сообщения: 11949 Репутация: N Группа: в ухо

    Spritz 30 апреля 2008 г. 9:43, спустя 18 минут

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

    сам я не писал, но мой товарищ сисист только этим и занимается )
    все умрут, а я изумруд
  • Trej Gun

    Сообщения: 5299 Репутация: N Группа: в ухо

    Spritz 1 июня 2008 г. 16:32, спустя 32 дня 6 часов 48 минут

    ghost, псасибо за ссылку

    qazaqq, небольшая неувязочка

    предпологаем что у нас


    ini_set('max_execution_time', 0);
    while(true){
    // some logic here
    }


    Первое что могу сказать что эта штука работает так:
    1 ты конектишся
    2 ставишь время выполнения без ограничений
    3 заходишь в цыкл
    4 читаешь из 192.168.0.1:40000
    5 пишешь в 127.0.0.1:20000
    6 ты закрываешь браузер
    7 соединение разрываеться (процесс не висит)

    вариант один у тебя браузер, но ты ничего не видешь пока сервер не отдаст весь контент
    этого естественно не произойдет потому что у тебя поток
    проверить можно тут http://mabp.kiev.ua/content/polygon/comet_clock.php?sid=12345
    посмотреть код можно на http://mabp.kiev.ua/content/2008/04/26/simple_comet/
    ты прерываешь обращение браузера и в лучшем случаи видишь то что ты успел закачать
    в худшем ничего не видешь
    плюс у тебя не работает яваскрипт

    вариант 2 ты читаешь из потока какойто программой
    начерта тебе тогда демон пробрось прогу через роут

    ЗЫ если я не прав жду каментов

  • Kaban

    Сообщения: 1 Репутация: N Группа: Кто попало

    Spritz 5 июня 2008 г. 4:38, спустя 3 дня 12 часов 5 минут


    7 соединение разрываеться (процесс не висит)

    ignore_user_abort


    вариант один у тебя браузер, но ты ничего не видешь пока сервер не отдаст весь контент
    этого естественно не произойдет потому что у тебя поток

    flush


    вариант 2 ты читаешь из потока какойто программой
    начерта тебе тогда демон пробрось прогу через роут

    +1

    ЗЫ если я не прав жду каментов :)

Пожалуйста, авторизуйтесь, чтобы написать комментарий!