【发布时间】:2019-05-12 09:41:49
【问题描述】:
我制作了一个循环运行的 php cli 脚本。我从服务器的终端(Windows)运行它。该服务器还可以用作 php 网络服务器 (xampp)。
php cli 脚本处理硬件 i/o 内容(通过串行端口向微控制器板响应和提供逻辑)。一直在运行。
我想要完成的是制作一个基于 Web 的应用程序 (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
}
}
所以问题是如何在不使用上述方法的情况下与 cgi 脚本中已经运行的 php cli 脚本进行交互?期待一种不影响服务器负载和性能的更好方法。
编辑:我也尝试使用数据库代替 json 文件,但性能仍然不好。
【问题讨论】:
标签: php command-line-interface server-side