Intereting Posts
Как получить тело сообщения и вложения в формате XML, используя php / linux с сервера Lotus Domino? PHP показывает изображение как BLOB mysqli PHP fgetcsv () не читает первый символ UTF-8 – alternatif using fgets взорвать строку и установить ключ для массива с текстом, который находится перед разделителем? Как сохранить сеанс без перезагрузки страницы? Сохранение элементов корзины покупок в файлах cookie и базе данных Как загрузить изображение в AWS S3 в PHP из памяти? Форма поиска с PDO Если вы очистите содержимое (ob_flush) запроса AJAX, содержимое загрузится? Где я могу найти контрольный список безопасности для веб-проектов? Удаление двойных котировок из строки JSON Извлекать файлы в zip-файле из корневого каталога? Как использовать рекурсивный итератор массива для обработки многомерного массива? Как анализировать фактический HTML со страницы с помощью CURL? Что делать с php после jquery .serialize ()

Что такое хороший межпроцессный метод связи между C и PHP в Linux

На самом деле я не знаю, задаю ли я правильный вопрос. Позвольте мне сначала описать мою проблему.

Конечный пользователь <-1-> веб-сервер (через PHP) <-2-> внутренний процесс (с помощью C или C ++) <-3-> внешнее оборудование

1 должен быть чем-то вроде запроса ajax. Это должно быть нечто вроде взаимодействия между процессами. Передача данных по протоколу 3 должна осуществляться через интерфейс RS232.

Конечный пользователь попросит изменить некоторые параметры на аппаратном обеспечении, затем запрос будет распространяться на оборудование. Аппаратные ответы успешны или неудачны, тогда результат будет передаваться пользователю. Задержка ответа на аппаратное обеспечение может быть в пределах 1 секунды.

Поэтому, когда веб-сервер получает запрос ajax от конечного пользователя, он будет удерживать и отправлять запрос IPC в программу c / c ++. Программа c / c ++ отправит через UART и удерживает и ждет ответа оборудования. Для части UART существует асинхронная модель uart, поэтому программе c / c ++ не нужно постоянно ждать UART.

Веб-сервер будет ждать, пока программа c / c ++ вернется (через IPC снова), а затем вернет результат обратно конечному пользователю.

Поскольку веб-сервер не имеет памяти, поэтому не может быть никаких асинхронных вещей (насколько я понимаю).

Я могу представить простой способ, который осуществляется через файл или базу данных. Веб-сервер непрерывно читает файлы или базу данных для ответа.

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

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

Можете ли вы предложить мне несколько хороших способов IPC для достижения моей цели?

И, если вы считаете, что есть лучшее решение (чем мое описание выше) для всего процесса или какой-либо конкретной ссылки (включая ссылку 1, 2 и 3), пожалуйста, также поделитесь своим 2cent.

Надеюсь, я четко спросил свой вопрос.

Благодарю.