У меня есть программное обеспечение, которое использует Lua для анализа данных и может выводить JSON; В настоящее время я записываю это в файл .json.
Затем веб-страница в формате .html или .php, работающая на локальном хосте через встроенный php-сервер (например, php -s localhost:8001 ) или что-то еще, может прочитать этот файл .json.
Если я хочу, чтобы первая программа записывала новый вывод каждую секунду, это похоже на сгорание чрезмерной записи на диск. 86400 пишет в день - где-то размер файла до 30 кб, что соответствует моим более высоким ожиданиям. И веб-страница продолжает читать ее неоднократно, чтобы получать обновления практически в реальном времени. Могу ли я обеспечить передачу данных только в ОЗУ между двумя программами?
Может быть, я слишком много думаю, и это спорно, поскольку современное оборудование прослужит десятилетия, даже если его переписывать снова и снова каждые второй. Если это так, я могу принять этот ответ и не беспокоиться о решении этой межъязыковой кросс-процессной головоломки.
Я могу заставить stdin/out работать только в одном и том же терминале, например в Python (еще не разобрался с lua stdin/out, но это не должно быть сложно), и я могу перенаправить этот стандартный вывод в файл, чтобы затем получить доступ к другой программе, но я понятия не имею, как передать его непосредственно на веб-страницу. Я считаю, что лучше всего использовать PHP.
Этот код не работает. Я создал полноценный пример, основываясь на комментариях Роберта, который связал обсуждение/документацию по lua и php. Обратите внимание: это независимые источники, поэтому...
producer.lua
Код: Выделить всё
local shmem = require("shmem")
local mem = shmem.new(1024)
body = "some kind of test"
mem:write(body)
Код: Выделить всё
Подробнее здесь: [url]https://stackoverflow.com/questions/79283803/use-same-shared-memory-unit-from-lua-and-php[/url]
Мобильная версия