|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
30.03.2015, 20:31 | #1 |
Форумчанин
Регистрация: 01.09.2009
Сообщений: 151
|
Php и WebSockets
Здравствуйте.
Есть задача, к которой я не знаю как подступиться. Вкратце, суть такая: - есть некий сервис, который умеет собирать данные из разных источников. - этот сервис общается с клиентскими приложениями по TCP. - данные поступают неравномерно - т.е., в произвольный момент времени этот сервис как бы сообщает всем подключенным клиентам - "О! Данные!" Задача - визуализировать эти данные в браузере. Проблема - каким образом обеспечить получение исходных данных. Вариант решения - в php-скрипте открыть сокет и подключиться к этому сервису. Но проблема в том, как долго может работать скрипт, пока не отвалится по таймауту; можно ли сделать так, что бы не отваливаля; если да, то как отправлять получаемые данные (естественно обработанные и подготовленные) в браузер - в web socket? Прошу помощи, т.к. гугление не дает общей картины. Идеально будет, если есть примеры с решениями подобной задачи. Заранее спасибо. |
30.03.2015, 20:45 | #2 |
Старожил
Регистрация: 25.02.2007
Сообщений: 4,177
|
таймер вешаем и делаем Ajax запросы - в скрипте если есть данные даем флаг - есть не.... если есть данные - то показываем их или че там еще
|
30.03.2015, 20:48 | #3 |
Форумчанин
Регистрация: 16.01.2015
Сообщений: 672
|
неотваливающегося не сделать, надо просто переподключаться
вощем я не понял в чем у вас проблемма |
30.03.2015, 21:41 | #4 |
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
Регистрация: 29.09.2007
Сообщений: 1,824
|
Вообще lomastr прав, только переподключаться. но можно написать модуль на c или c++ который будет слушать сокет и в случаи получения данных кидать их клиенту.
Я часть той силы, что вечно хочет зла, но вечно совершает благо..
|
31.03.2015, 19:38 | #5 | |
Форумчанин
Регистрация: 01.09.2009
Сообщений: 151
|
Цитата:
set_time_limit(0) - обеспечивает бесконечное выполнение скрипта, а ob_implicit_flush() заставляет php выводить результат сражу, не дожидаясь полной загрузки страницы. Но для решения моей проблемы этого не достаточно. Допустим, я открыл в браузере страницу с кнопкой "Старт" и полем для отображения данных (textarea). Вопрос в том, какой javascript надо привязать на клик по кнопке, что бы в textarea начали отображаться данные из "бесконечного" php-скрипта. Ведь по прямой ссылке я его открыть не смогу, аяксом загрузить тоже не получится - потому что события завершения не будет. Тупик... |
|
31.03.2015, 20:11 | #6 | |
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
Регистрация: 29.09.2007
Сообщений: 1,824
|
Цитата:
вот тут я писал подобное уже http://programmersforum.ru/showthread.php?t=275312
Я часть той силы, что вечно хочет зла, но вечно совершает благо..
Последний раз редактировалось Stanislav; 31.03.2015 в 20:14. |
|
31.03.2015, 23:06 | #7 |
Форумчанин
Регистрация: 16.01.2015
Сообщений: 672
|
а что интересует как организовать websokets? в инете этого дела полно, копипаста в 3 минуты
или еще в что? |
31.03.2015, 23:52 | #8 | |||
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
Регистрация: 29.09.2007
Сообщений: 1,824
|
Цитата:
Цитата:
что можно заюзать чтобы решить эту задачу я уже писал постом ниже и даже ссылку давал http://programmersforum.ru/showthread.php?t=275312 но видимо вас это не заинтересовало Я описывал и другие варианты. Открываете страницу. Вешается на яваскрипте таймер который каждые 5 сек опрашивает (по средством ajax запроса) ваш скрипт на php а скрипт уже делает запросы к база или куда вам нужно и если пришли данные php их возвращает, в ответе в ajax запросе в методе success вы эти данные пишите в нужный вам div. Но тогда вам нужно следующее: Цитата:
но! я так же писал где то ранее не помню, если вы напишите какой нибудь модуль на том же с или с++ который будет общаться не прерывно или прерывно (я не знаю что за сервис и вообще архитектуру) с вашим сервисом по TCP и при получении данных он также может их складывать в базу а может сразу слать на веб-сокет. но если вам нужна история, то естественно нужно складывать в базу, а можно сразу отображать (сразу слать веб сокету) и тут же писать в базу (для истории) если выбирать вариант когда сразу пишет в веб-сокет - то не нужен ни какой ява-скрипт который аяксом опрашивает php скрипт, а нужен ява-скрипт который будет слушать сокет, понимаете? Какой вариант выбрать решать вам, зависит от ваших знаний и желаний и задач самое главное. Путей по которой можно решить задачу много. lomastr_ - сможете помочь автору? примерами?
Я часть той силы, что вечно хочет зла, но вечно совершает благо..
Последний раз редактировалось Stanislav; 01.04.2015 в 00:21. |
|||
16.04.2015, 16:42 | #9 |
Форумчанин
Регистрация: 01.09.2009
Сообщений: 151
|
Итак, вот какая картина сложилась на данный момент - может кому-то и пригодится)
1. На веб-сервере скрипт (назовем его demon.php) должен запускаться в виде службы или демона. 2. Внутри скрипта demon.php я должен открыть TCP-подключение с целевому серверу и в бесконечном цикле читать оттуда данные. При получении данных от целевого сервера я формирую сообщение в виде json-обекта и отправляю его клиенту в браузер 3. Если из браузера приходят данные, то в demon.php я должен открыть ещё одно TCP-подключение и в него отправить запрос, сформированный на основе полученных данных. Базовый пример, который помог мне собрать всё в кучу тут: http://www.sanwebe.com/2013/05/chat-...ket-php-socket Всем спасибо за участие. |
16.04.2015, 17:01 | #10 |
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
Регистрация: 29.09.2007
Сообщений: 1,824
|
Да не за что, надеюсь никто так делать не будет. Грабли сплошные молчу про то что работать будет только на броузерах держащие вебсокет и только не за натом. + доп нагрузка на сервер. Вы шикарно стрелнули из пушки по воробьям.
Я часть той силы, что вечно хочет зла, но вечно совершает благо..
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
статья - Бесплатный PHP, HTML, CSS, JavaScript редактор ? Codelobster PHP Edition | Pblog | Обсуждение статей | 0 | 20.04.2012 14:50 |
TopServer(PHP+MySQL+Apache+/etc), и обновление компонентов(в основном PHP) | Пепел Феникса | Софт | 2 | 05.11.2011 14:38 |
Вебинар по PHP - для тех, кто хочет начать изучение PHP, 30 июля. | PHPLance | HTML и CSS | 0 | 23.07.2011 22:33 |
что не так с php кдом или с настройками MySQL+PHP | Jimmi | Помощь студентам | 2 | 27.12.2010 09:03 |
Преобразование HTML-PHP в PHP с запуском в командной строке. | TERAB1T | PHP | 4 | 01.06.2010 14:14 |