За последние 24 часа нас посетили 18042 программиста и 1679 роботов. Сейчас ищут 1127 программистов ...

Реализация Клиент/Сервер на PHP с постоянным соединением

Тема в разделе "Прочие вопросы по PHP", создана пользователем Prizrak, 26 авг 2008.

  1. Prizrak

    Prizrak Активный пользователь

    С нами с:
    26 авг 2008
    Сообщения:
    11
    Симпатии:
    0
    Написал на РНР клиент и сервер(по примеру в нете). Сервер висит как процесс и слушает порт. Реализация по средством сокетов. Клиент коннектиться. Но что бы, вывести данные в браузер, нужно завершить работу РНР скрипта клиента. В цикле он не выводит данные висит белым окном, пока не завершит работу. И для этого нужно разорвать соединение с сервером.
    Но серверу тоже нужно клиенту данные отправлять, а соединения уже нет. То есть не получаться постоянного коннекта.

    Вообще такое можно реализовать, что был постоянный коннект?
     
  2. S.t.A.M.

    S.t.A.M. Активный пользователь

    С нами с:
    10 сен 2007
    Сообщения:
    1.041
    Симпатии:
    0
    Зачем?!
     
  3. Prizrak

    Prizrak Активный пользователь

    С нами с:
    26 авг 2008
    Сообщения:
    11
    Симпатии:
    0
    Для игры или чата. Что бы постоянно не перегружать страницу.
     
  4. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
  5. nimistar

    nimistar Активный пользователь

    С нами с:
    30 май 2007
    Сообщения:
    919
    Симпатии:
    0
    мочь то можно ... но вот предпосылок для этого нет
    сам протокол HTTP для этого не предназначен (keep-alive - это для другого) данный протокол сессионый по сути, и предназначен для предачи конечного размера данных.

    для подобного постоянного соединения ни сервер (Апач), ни браузер пользователя - не предназначены!


    если очень хочется то можно рассмотреть связку flush();ob_flush(); - но настоятельно советую рассмотреть технологию AJAX
     
  6. Prizrak

    Prizrak Активный пользователь

    С нами с:
    26 авг 2008
    Сообщения:
    11
    Симпатии:
    0
    AJAX я рассматриваю.
    Суть тут в том что бы понять что можно а что нельзя.

    1. Как я и говорил, просто понять а вообще такое возможно на PHP или нет.

    2. Ещё мне очень интересно как реализован чат Бородина. РНР я знаю. О написании сервера на TCL тоже имею представление. Но вот как они связаны понять не могу. И как я понимаю Бородин не использует сокеты. Может кто то об этом знает.
     
  7. nimistar

    nimistar Активный пользователь

    С нами с:
    30 май 2007
    Сообщения:
    919
    Симпатии:
    0
    Prizrak - не чатюсь ... и даже неинтересно ;-)
     
  8. Prizrak

    Prizrak Активный пользователь

    С нами с:
    26 авг 2008
    Сообщения:
    11
    Симпатии:
    0
    Я тоже. Мне не чат сделать нужно, а понять суть технологии. И ВСЕ!
     
  9. nimistar

    nimistar Активный пользователь

    С нами с:
    30 май 2007
    Сообщения:
    919
    Симпатии:
    0
    технологии постоянных соединений ??
    для этого не стоит использовать протокол хттп .. а значит и пхп неподходит! да и браузер в качестве клиента тоже неахти!
     
  10. Psih

    Psih Активный пользователь
    Команда форума Модератор

    С нами с:
    28 дек 2006
    Сообщения:
    2.678
    Симпатии:
    6
    Адрес:
    Рига, Латвия
    PHP может просто в цикле слушать порт, а браузер периодически его спрашивать на AJAX - и всё будет в ажуре. А постоянное соединение может обеспечить Flash. Да, скрипт придётся запускать из командной строки - т.е. он по сути будет сам себе WEB сервер. Принимайте коннекции на WEB сервер и реврайтом перенаправляйте на другой порт вашему скрипту. идею я вам подал, дальше мануал и гугль.
     
  11. Prizrak

    Prizrak Активный пользователь

    С нами с:
    26 авг 2008
    Сообщения:
    11
    Симпатии:
    0
    Вот это зло!!! Суть в том что бы соединение с браузером устанавливалось 1 раз, а сервер потом (не зависимо от браузера) будет посылать данные по мере их поступления. А не браузер спрашивать. Вот.

    Вообщем то главный вопрос это в том как реализован чат Бородина. Тоесть как он реализован знаю, а как происходит процес передачи данных.
    Скорее всего по сокетам, но работы с сокетами я в исходном коде не нашел.
     
  12. MaXyC_Web_Studio

    MaXyC_Web_Studio Активный пользователь

    С нами с:
    31 дек 2006
    Сообщения:
    678
    Симпатии:
    3
    Адрес:
    Новоуральск
    хм. помоему

    сервер tcl хранит последние 50 сообщений в памяти.
    браузер подключается средствами аякса к скрипту на сервере, который запрашивает N сообщений из памяти tcl сервера. выводит их в браузере. закрывает соединение. через 5 секунд начинается занова: подключение к скрипту на сервере...запрос сообщений время которых выше чем полученное последним сообщение..
     
  13. Prizrak

    Prizrak Активный пользователь

    С нами с:
    26 авг 2008
    Сообщения:
    11
    Симпатии:
    0
    Вот цитата из описания чата: "Данный чат состоит из 2х частей: 1 - PHP-скрипты, 2 - чат-сервер (программа для серверной части). Эта программа держит коннекты и отсылает в них сообщения, как только они приходят. Все остальное - делают скрипты на PHP".

    Ни о каком AJAX речи не идет.
     
  14. Psih

    Psih Активный пользователь
    Команда форума Модератор

    С нами с:
    28 дек 2006
    Сообщения:
    2.678
    Симпатии:
    6
    Адрес:
    Рига, Латвия
    Я же уже написал - Flash объект! Он умеет держать постоянный коннект. Сколько можно повторять.
     
  15. Prizrak

    Prizrak Активный пользователь

    С нами с:
    26 авг 2008
    Сообщения:
    11
    Симпатии:
    0
    А подробней, о чем речь?