На самом деле я не знаю, задаю ли я правильный вопрос. Позвольте мне сначала описать мою проблему.
Конечный пользователь <-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.
Надеюсь, я четко спросил свой вопрос.
Благодарю.