设备会每间隔1分钟上传对应车位的数据,数据会上传到kibana,如下图。
我要判断的是数据10分钟内是否还在正常运行。
视图页面:
1.多加一列,显示一个小圆图标。
2.写JS代码,定时器间隔一定时间调用下JS代码,JS代码通过ajax调用控制器方法。
3.控制器的代码如下:
如果当前时间减去该车位最后检测的的数据的时间大于十分钟,说明该设备已停止工作10分钟,返回是sta=0,icon="color:red"。反之则正常工作,返回sta=0,icon="color:red"。
视图ajax接收到返回的数据,给那一行的运行情况小圆的样式变成红色(不正常),绿色(正常)。
如下图:
下面贴出完整代码:
控制器:
//根据车位编号获取最后时间
private function get_ts($dwz_info_id){
$lpath = THINK_PATH.'Library/Vendor/vendor/autoload.php';
require $lpath;
$hosts = [
'http://XXXXXXX', // IP + Port,这里涉及到隐私,您要根据自己的IP和端口号进行填写
];
$client = \Elasticsearch\ClientBuilder::create()->setHosts($hosts)->build();
//获取es最后更新的时间,在更新的时候使用
$json = '{
"version": true,
"query": {
"bool": {
"must": [
{
"match_all": {}
},
{
"match_phrase": {
"_type": {
"query": "dwz_bike_sub_realtime"
}
}
},
{
"match_phrase": {
"_index": {
"query": "bike_index_v5"
}
}
},
{
"match_phrase": {
"dwz_info_id": {
"query": "'.$dwz_info_id.'"
}
}
},
{
"range": {
"timestamp": {
"gte": 0,
"lte": 9507697943118,
"format": "epoch_millis"
}
}