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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Сокеты + web интерфейс

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: web интерфейс к девайсине
aljaba
Отправлено: 13 Декабря, 2006 - 09:23:00
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Дек. 2006  
Откуда: nnov


Помог: 0 раз(а)




Привет всем. Вот задачка у меня есть: есть собственная девайсина подключённая к компу и мне надо ей управлять через браузер (условие тз). Я написал драйвер на с и серверное приложение на стороне машины подключённой к девайсине. Единственным способом Управления являются сокеты. На отладочном этапе Интерфейс был то же написан на с и всё работало чики-пуки. web интерфейс решил писать на php (после с освоился довольно легко). написал на php клиента. Всё коннектится и прекрасно работает. Возникшие вопросы:
можно ли со стороны браузера передавать комманды скрипту?
можно ли как нибудь реализовать модульный скрипт, тоесть по событию (нажатию на кнопку) у меня выполнялась часть скрипта?
 
 Top
f0rm4t
Отправлено: 13 Декабря, 2006 - 14:02:23
Post Id



Посетитель


Покинул форум
Сообщений всего: 433
Дата рег-ции: Июнь 2006  


Помог: -1 раз(а)




Передавать команду можно так: 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.  
 
 Top
aljaba
Отправлено: 13 Декабря, 2006 - 15:32:17
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Дек. 2006  
Откуда: nnov


Помог: 0 раз(а)




f0rm4t
огромное спасибо именно то что мне нужно Улыбка Есть ещё один вопрос: как я понял - сокет на php открыт (подключен, передаёт и принимает данные ) только во время выполнения на сервере, после загрузки страницы он закрывает соединение... или я ошибаюсь?
 
 Top
f0rm4t
Отправлено: 13 Декабря, 2006 - 16:45:17
Post Id



Посетитель


Покинул форум
Сообщений всего: 433
Дата рег-ции: Июнь 2006  


Помог: -1 раз(а)




Страница загрузится после выполнения скрипта, т.е. сокет завершится.
 
 Top
aljaba
Отправлено: 14 Декабря, 2006 - 10:47:56
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Дек. 2006  
Откуда: nnov


Помог: 0 раз(а)




А существует возможность создать web демона? или сделать так что бы скрипт всё время интерпритировался (сокет принимал и посылал данные), а например другой скрипт отображал принятые данные?
 
 Top
f0rm4t
Отправлено: 14 Декабря, 2006 - 12:30:44
Post Id



Посетитель


Покинул форум
Сообщений всего: 433
Дата рег-ции: Июнь 2006  


Помог: -1 раз(а)




Ммм.... вообще это реально...
Примерно так:
Первый скрипт постоянно весит в памяти, и обрабатывает пакеты. Это можно сделать примерно так:
PHP:
скопировать код в буфер обмена
  1. while (НЕ_ПОЛУЧЕН_ЗАВЕРШАЮЩИЙ_ПАКЕТ) { обрабатывать_пакеты }

После каждого полученного пакета добавляется запись в БД.
Второй скрипт отправляет пакеты и читает из БД последнюю запись.
 
 Top
aljaba
Отправлено: 18 Декабря, 2006 - 12:19:00
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Дек. 2006  
Откуда: nnov


Помог: 0 раз(а)




@set_time_limit(0) подойдёт для "демона"?
Если я правильно понял, эта функция заставит скрипт выполняться вечно....
 
 Top
f0rm4t
Отправлено: 18 Декабря, 2006 - 17:10:31
Post Id



Посетитель


Покинул форум
Сообщений всего: 433
Дата рег-ции: Июнь 2006  


Помог: -1 раз(а)




Ну, это просто уберет ограничение на время исполнения. Т.е. да, он будет весеть вечно.
Так же рекомендую позаботится о нагрузке на сервер. Т.е. делать пауза в теле цикла.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB