Связь между PHP и приложением - PullRequest
1 голос
/ 01 декабря 2008

Я играю со встроенным устройством Linux и ищу способ получить код моего приложения для связи с веб-интерфейсом. Мне нужно показать некоторую информацию о состоянии из приложения в веб-интерфейсе устройства, а также хотел бы иметь возможность информировать приложение о любых действиях пользователя, таких как загруженные файлы и т. Д. PHP - кажется хорошим способом создания интерфейса, но коммуникационная часть сложнее. Я нашел следующие варианты, но не уверен, какой из них будет самым простым и удобным в использовании.

Сокеты. Сначала необходимо включить сокеты для PHP, чтобы попробовать это. Не знаю, займет ли включение гораздо больше места.

База данных. Похоже на решение проблемы избыточного количества ресурсов.

Общий файл. Похоже, много работы.

Именованные каналы. Пробовал с некоторым успехом, но не уверен, будут ли проблемы, например, при одновременной загрузке страницы. Может, розетки проще?

Каким будет лучший путь? Есть ли что-то, что я полностью пропускаю? Как это делается в тех многочисленных коммерческих сетевых коммутаторах на базе Linux?

Ответы [ 4 ]

1 голос
/ 01 декабря 2008

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

Таким образом, в вашем случае клиент PHP инициализирует соединение, а затем сервер может ответить со статусом устройства.

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

1 голос
/ 01 декабря 2008

Что это за устройство?

Если вы работаете с чем-то вроде общего файла, как будет обновляться устройство?

Как именованные каналы будут сталкиваться с проблемами параллелизма, которых сокеты избегают?

С точки зрения связи между устройством и PHP, файл кажется идеальным. PHP может использовать что-то базовое, например file_get_contents (), устройство может просто записать в файл. Если вас беспокоит момент времени, файл обновляется до быстрой проверки длины.

С точки зрения информирования PHP устройства о том, что делать, я также склоняюсь к файлам. Пусть устройство наблюдает за каталогом, а скрипт создает там файл с файлом file_put_contents ($ path. Uniqid (), $ command); Таким образом, если два сценария выполняются в одно и то же время, у вас просто есть два файла для устройства.

0 голосов
/ 07 декабря 2008

Если возможно, используйте сценарии оболочки.

Я сделал нечто подобное, я написал приложение для видеонаблюдения. Видео часть обрабатывается движением (отличный пакет FOSS). Приложение представляет собой готовое решение на стандартном оборудовании, используемом для мониторинга казино с игровыми автоматами. Он служит в качестве киоска в местном масштабе и доступен через Интернет. Я написал весь код пользовательского интерфейса на PHP, локальный дисплей - это плотно заблокированный рабочий стол KDE с полноэкранным браузером по умолчанию localhost. Я использовал сценарии оболочки для взаимодействия с движением и ОС.

На секунду подумал: Если вы можете использовать самоскомпилированные приложения на устройстве: напишите простую программу, которая возвращает желаемое значение, и используйте PHP exec () или passthru () или system ().

0 голосов
/ 01 декабря 2008

Встроенные Linux-боксы для маршрутизации с веб-интерфейсом не используют PHP. Они используют CGI и имеют сценарии оболочки для доставки веб-страницы.

Для получения информации из приложения в веб-интерфейсе опция «Общий файл» кажется мне наиболее разумной. Приложение может просто записать информацию в файл, который читается PHP.

Наоборот, поначалу все выглядит не так хорошо. PHP поддерживает блокировку файлов, но, скорее всего, не работает на системном уровне. Возможно, одним из решений является то, что на самом деле каждый PHP-скрипт, имеющий информацию для приложения, создает свой собственный файл (с уникальным именем файла, например, основанный на метке времени + случайное значение). Приложение может наблюдать за назначенным каталогом для этих файлов для всплывающих окон. После их обработки он может просто удалить их. Для этого приложению нужно только разрешение на запись в каталог (поэтому владение файлами не является проблемой).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...