Я сделал скрипт php cli, работающий в цикле.Я запускаю его из терминала сервера (Windows).Этот сервер также функционирует как веб-сервер php (xampp).
Сценарий php cli работает с аппаратным вводом-выводом (отвечает и передает логику плате микроконтроллера через последовательный порт).Который всегда работает.
И что я пытаюсь сделать, так это создать веб-приложение (php cgi) для управления этим скриптом cli.как отправка какой-то команды, чтобы заставить его что-то делать.
То, что я пробовал
Я пытался использовать своего рода временный файл json.Какое содержимое генерируется сценарием cgi.
Затем сценарий cli читает этот файл в каждом цикле.И если в json есть изменение (временная метка), сценарий использует данные внутри json, чтобы сделать что-то соответственно.А затем сохраните эту временную метку, чтобы сравнить ее с json для следующего цикла.
Но это вызывает огромную нагрузку на сервер, и сценарий cli становится намного медленнее.Что влияет на отзывчивость микроконтроллера.
цикл php cli выглядит примерно так:
<?php
$lastTimestamp=0;
while(true){
//read json file
$json=json_decode(file_get_contents("temp.json"));
if($lastTimestamp < $json->stamp){
//do something with $json->data
...
//update $lastTimestamp
$lastTimestamp = $json->stamp;
}
//rest of microcontroller logic here
...
}
, а файл temp.json - что-то вроде
{
"stamp": 1557653475,
"data": {
"nd_a": 1,
"nd_b": 1,
"nd_c": 0
}
}
поэтому вопрос заключается в том, как взаимодействовать с уже запущенным скриптом php cli из скрипта cgi, не используя вышеуказанные методы?ожидая лучшего способа, который не влияет на нагрузку и производительность сервера.
Редактировать: я также пытался использовать базу данных вместо файла json, но производительность все еще не очень хорошая.