2008-12-01 2 views
1

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

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

База данных. Похоже, это решение избыточного уровня.

Общий файл. Кажется, что много работы.

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

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

ответ

1

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

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

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

+0

Звучит неплохо. Думаю, мне придется попробовать это. Мне нужно было бы составить простой протокол для этого. Какие-либо предложения? – 2008-12-01 20:53:25

1

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

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

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

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

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

+0

Это устройство ARM9 с 16 МБ флэш-памятью и 64 МБ оперативной памяти. Мне не нравится общий файловый подход, потому что приложение должно постоянно обновлять файл и опробовать файлы из сценариев. Но да, уникальное имя файла решит проблему параллелизма. – 2008-12-01 20:51:25

0

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

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

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

+0

CGI даст немного экономии пространства, но PHP кажется намного проще, и я думаю, что я готов пожертвовать 3 МБ 6 МБ. – 2008-12-01 20:52:12

0

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

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

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

Смежные вопросы