Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Сокеты + web интерфейс
Форумы портала PHP.SU » PHP » Программирование на PHP » Сокеты + web интерфейс

Страниц (1): [1]
 

1. aljaba - 13 Декабря, 2006 - 09:23:00 - перейти к сообщению
Привет всем. Вот задачка у меня есть: есть собственная девайсина подключённая к компу и мне надо ей управлять через браузер (условие тз). Я написал драйвер на с и серверное приложение на стороне машины подключённой к девайсине. Единственным способом Управления являются сокеты. На отладочном этапе Интерфейс был то же написан на с и всё работало чики-пуки. web интерфейс решил писать на php (после с освоился довольно легко). написал на php клиента. Всё коннектится и прекрасно работает. Возникшие вопросы:
можно ли со стороны браузера передавать комманды скрипту?
можно ли как нибудь реализовать модульный скрипт, тоесть по событию (нажатию на кнопку) у меня выполнялась часть скрипта?
2. f0rm4t - 13 Декабря, 2006 - 14:02:23 - перейти к сообщению
Передавать команду можно так: script.php?function=abc
PHP:
скопировать код в буфер обмена
  1.  
  2. switch ($_GET['function'])
  3. {
  4.     case 'abc':
  5.         отправка_сокета_1;
  6.     case 'abcd':
  7.         отправка_сокета_2;
  8.     ...
  9. }
  10.  


Веб-часть:
CODE (text):
скопировать код в буфер обмена
  1.  
  2. <html>
  3. <input type="button" value="Send socket 1" onClick="location.href='script.php?function=abc'">
  4.  
  5. <input type="button" value="Send socket 2" onClick="location.href='script.php?function=abcd'">
  6. ...
  7. </html>
  8.  


Или ссылками:
CODE (text):
скопировать код в буфер обмена
  1.  
  2. <html>
  3. <a href="script.php?function=abc">Send socket 1</a>
  4. ...
  5. </html>
  6.  
3. aljaba - 13 Декабря, 2006 - 15:32:17 - перейти к сообщению
f0rm4t
огромное спасибо именно то что мне нужно Улыбка Есть ещё один вопрос: как я понял - сокет на php открыт (подключен, передаёт и принимает данные ) только во время выполнения на сервере, после загрузки страницы он закрывает соединение... или я ошибаюсь?
4. f0rm4t - 13 Декабря, 2006 - 16:45:17 - перейти к сообщению
Страница загрузится после выполнения скрипта, т.е. сокет завершится.
5. aljaba - 14 Декабря, 2006 - 10:47:56 - перейти к сообщению
А существует возможность создать web демона? или сделать так что бы скрипт всё время интерпритировался (сокет принимал и посылал данные), а например другой скрипт отображал принятые данные?
6. f0rm4t - 14 Декабря, 2006 - 12:30:44 - перейти к сообщению
Ммм.... вообще это реально...
Примерно так:
Первый скрипт постоянно весит в памяти, и обрабатывает пакеты. Это можно сделать примерно так:
PHP:
скопировать код в буфер обмена
  1. while (НЕ_ПОЛУЧЕН_ЗАВЕРШАЮЩИЙ_ПАКЕТ) { обрабатывать_пакеты }

После каждого полученного пакета добавляется запись в БД.
Второй скрипт отправляет пакеты и читает из БД последнюю запись.
7. aljaba - 18 Декабря, 2006 - 12:19:00 - перейти к сообщению
@set_time_limit(0) подойдёт для "демона"?
Если я правильно понял, эта функция заставит скрипт выполняться вечно....
8. f0rm4t - 18 Декабря, 2006 - 17:10:31 - перейти к сообщению
Ну, это просто уберет ограничение на время исполнения. Т.е. да, он будет весеть вечно.
Так же рекомендую позаботится о нагрузке на сервер. Т.е. делать пауза в теле цикла.

 

Powered by ExBB FM 1.0 RC1