📄 181jk9090.php
字号:
$msval = 0.05306*$msval;
}
if ($fsuitem =='fsu050m003') {
$msval = 0.05306*$msval;
}
if ($fsuitem =='fsu050m004') {
$msval = $msval/9.84;
}
if ($fsuitem =='fsu050m005') {
$msval = 1.07*$msval;
}
// 临时使用倍数表结束
// 获得测量最大值和发生时间
$msmaxtime = "msmaxtime".$i;
$msmaxval = "msmaxval".$i;
if ($msinsert) { // $msperiod 限定的时间内收到的第一个值等于最大值
$$msmaxval = $msval;
$$msmaxtime = date("Y-m-d H:i:s");
}else{
// 和原来的最大值比较
if ($$msmaxval < $msval) {
$$msmaxtime = date("Y-m-d H:i:s");
$$msmaxval = $msval;
}
}
// 获得测量最小值和发生时间
$msmintime = "msmintime".$i;
$msminval = "msminval".$i;
if ($msinsert) { // $msperiod 限定的时间内收到的第一个值等于最小值
$$msminval = $msval;
$$msmintime = date("Y-m-d H:i:s");
}else{
// 和原来的最小值比较
if ($$msminval > $msval) {
$$msmintime = date("Y-m-d H:i:s");
$$msminval = $msval;
}
}
// 获得平均值
$msvalsum = "msvalsum".$i; //第$i 个测量值总和变量名
$$msvalsum += $msval; //第$i 个总和
$msvalcount = "msvalcount".$i; // 第$i 个计数器变量名
$$msvalcount ++ ;
$msvalavg = "msvalavg".$i; //第$i 个平均值变量名
$$msvalavg = $$msvalsum / $$msvalcount; //第$i 个平均值
// $msperiod 限定的时间内收到的第一组数据插入,以后更新
if ($msinsert) {
$query = sprintf("INSERT INTO `%s` (ItemID ,maxval,maxtime,minval,mintime,average,flag)
VALUES ('%s','%s','%s','%s','%s','%s','%s') ",
mysql_real_escape_string($fsuId),
mysql_real_escape_string($fsuitem),
mysql_real_escape_string($$msmaxval),
mysql_real_escape_string($$msmaxtime),
mysql_real_escape_string($$msminval),
mysql_real_escape_string($$msmintime),
mysql_real_escape_string($$msvalavg),
mysql_real_escape_string($msstart));
}else {
$query = sprintf("UPDATE `%s`
SET maxval= '%s',maxtime= '%s',minval= '%s',mintime= '%s',average= '%s'
WHERE ItemID = '%s' AND flag = '%s'",
mysql_real_escape_string($fsuId),
mysql_real_escape_string($$msmaxval),
mysql_real_escape_string($$msmaxtime),
mysql_real_escape_string($$msminval),
mysql_real_escape_string($$msmintime),
mysql_real_escape_string($$msvalavg),
mysql_real_escape_string($fsuitem),
mysql_real_escape_string($msstart));
}
// echo $query."\n";
mysql_query($query) or die("Invalid query: " . mysql_error());
// 将测量数据更新到实时表rtvaldata
$query_rtval = sprintf("UPDATE `rtvaldata`
SET Value= '%s',time= NOW() WHERE ItemID = '%s' ",
mysql_real_escape_string($msval),
mysql_real_escape_string($fsuitem));
mysql_query($query_rtval) or die("Invalid query: " . mysql_error());
} //解析出 $measuresum 个记录。 for 循环结束
// Send response
$response = "#VOK#";
socket_write($msgsock, $response, strlen($response));
// 检查计时器
$bb = time() - $msstart;
// echo "DELTATIME ".$bb."\n";
if ($bb < $msperiod) {
$msinsert = FALSE ;
}else{
$msinsert = TRUE ;
// 将最大值最小值数组置零
for ($i=0; $i < $measuresum; $i++) {
$msvalsum = "msvalsum".$i;
$$msvalsum = 0;
$msvalcount = "msvalcount".$i;
$$msvalcount = 0;
$msminval = "msminval".$i;
$$msminval = 0;
$msmaxval = "msmaxval".$i;
$$msmaxval = 0;
}
}
// 继续查找剩余$buf中的匹配字符串
$buf = substr($restbuf,((strpos($restbuf,"#"))+1));//用掉一段,裁掉一段
continue;
}
// "#ALARM*fsu056*LEVEL=1,001=1*#"
if (substr($buf,0,7) == '#ALARM*') {
$restbuf=substr($buf,14);
// resolve data
$level = substr($restbuf,6,1);
$fsuitem = $fsuId.'m'.substr($restbuf,8,3);
$alval = substr($restbuf,12,(strpos($restbuf,"*")-12));
$nowtime = date("Y-m-d H:i:s");
// echo "LEVEL=".$level." ItemID=".$fsuitem." Alarmval=".$alval."\n";
// echo $buf."\n";
// 临时使用倍数表开始
if ($fsuitem =='fsu050m001') {
$alval = 0.05349*$alval;
}
if ($fsuitem =='fsu050m002') {
$alval = 0.05349*$alval;
}
if ($fsuitem =='fsu050m003') {
$alval = 0.05349*$alval;
}
if ($fsuitem =='fsu050m004') {
$alval = $alval/9.348;
}
if ($fsuitem =='fsu050m005') {
$alval = 1.07*$alval;
}
// 临时使用倍数表结束
// 根据告警级别定义
switch ($level) {
case 9: //控制结果告警
if ($alval == '1' ) {
$alval = "控制成功";
} else {
$alval = "控制失败";
}
$fsuitem = $fsuId.'c'.substr($restbuf,8,3);
$query = sprintf("INSERT INTO `alarmhisdata` (ItemID ,AlarmText,AlarmLevel,AlarmTime) VALUES ('%s','%s','OPEVENT',NOW()) ",
mysql_real_escape_string($fsuitem),
mysql_real_escape_string($alval));
mysql_query($query) or die("Invalid query: " . mysql_error());
//更新实时告警表alarm
$query = sprintf("UPDATE `alarm` SET `AlarmLevel` = 'OPEVENT',`AlarmText` = '%s'
WHERE `ItemID` = '%s' ",
mysql_real_escape_string($alval),
mysql_real_escape_string($fsuitem));
mysql_query($query) or die("Invalid query: " . mysql_error());
$response = "#AOK#";
socket_write($msgsock, $response, strlen($response));
break;
case 1:
$AlarmLevel = "OPEVENT";
break;
case 4:
$AlarmLevel = "NORMAL";
break;
case 3:
$AlarmLevel = "MAIN";
break;
case 2:
$AlarmLevel = "FATAL";
break;
case 5:
$AlarmLevel = "NOALARM";
break;
case 6:
$AlarmLevel = "NOALARM";
break;
default:
$AlarmLevel = "NOALARM";
}
// 正常告警,先查询是否第一次告警
$query = sprintf("SELECT * FROM `alarmhisdata` WHERE `ItemID` = '%s' AND `memo` = 'temp' AND `AlarmLevel` = '%s'",
mysql_real_escape_string($fsuitem),
mysql_real_escape_string($AlarmLevel));
$result = mysql_query($query) or die("Invalid query: " . mysql_error());
if (mysql_num_rows($result) == 0) {
//是第一次告警,insert date into alarmhisdata
$query = sprintf("INSERT INTO `alarmhisdata` (ItemID ,AlarmLevel,AlarmValue,AlarmTime,EndTime,memo) VALUES ('%s','%s','%s',NOW(),NOW(),'temp') ",
mysql_real_escape_string($fsuitem),
mysql_real_escape_string($AlarmLevel),
mysql_real_escape_string($alval));
mysql_query($query) or die("Invalid query: " . mysql_error());
} else {
$row = mysql_fetch_array($result, MYSQL_ASSOC) ;
$alarmid =$row["AlarmHisID"];
$endtime = $row["EndTime"];
$pptime= strtotime($nowtime) - strtotime($endtime);
if ($pptime > $lifetime) {
// 超过特定时间(由$lifetime定义),将原有告警设为旧告警
$query = sprintf("UPDATE `alarmhisdata` SET `memo` = 'END' WHERE `AlarmHisID` = '%s' AND `AlarmLevel` = '%s'",
mysql_real_escape_string($alarmid),
mysql_real_escape_string($AlarmLevel));
mysql_query($query) or die("Invalid query: " . mysql_error());
//插入新告警 ,insert date into alarmhisdata
$query = sprintf("INSERT INTO `alarmhisdata` (ItemID ,AlarmLevel,AlarmValue,AlarmTime,EndTime,memo) VALUES ('%s','%s','%s',NOW(),NOW(),'temp') ",
mysql_real_escape_string($fsuitem),
mysql_real_escape_string($AlarmLevel),
mysql_real_escape_string($alval));
mysql_query($query) or die("Invalid query: " . mysql_error());
} else {
//没超过特定时间,update endtime
$query = sprintf("UPDATE `alarmhisdata` SET `EndTime` = NOW(),`EndValue`='%s'
WHERE `AlarmHisID` = '%s'",
mysql_real_escape_string($alval),
mysql_real_escape_string($alarmid));
mysql_query($query) or die("Invalid query: " . mysql_error());
}
}
//更新实时告警表alarm
$query = sprintf("UPDATE `alarm` SET `AlarmLevel` = '%s',`AlarmValue` = '%s' ,`AlarmTime`=NOW()
WHERE `ItemID` = '%s' ",
mysql_real_escape_string($AlarmLevel),
mysql_real_escape_string($alval),
mysql_real_escape_string($fsuitem));
mysql_query($query) or die("Invalid query: " . mysql_error());
// Send response
$response = "#AOK#";
socket_write($msgsock, $response, strlen($response));
// 继续查找剩余$buf中的匹配字符串
$buf = substr($restbuf,((strpos($restbuf,"#"))+1));//用掉一段,裁掉一段
continue;
}
/*
// "#RTVAL*fsu001*001=1.35,002=1.55,#"
if (substr($buf,0,7) == '#RTVAL*') {
$restbuf = substr($buf,14);
$fsuId = substr($buf,7,6);
$measuresum = substr_count($restbuf, '=') ;
for ($i=0; $i < $measuresum; $i++) {
$fsuitem = $fsuId.'m'.substr($restbuf,0,3);
$msval = substr($restbuf,4,(strpos($restbuf,",")-4));
$nowtime = time();
$restbuf = substr($restbuf,((strpos($restbuf,","))+1));
// update values
$query = sprintf("UPDATE `rtmeasure` SET `rtval`='%s',`time`= '%s' WHERE `id` = '%s'",
mysql_real_escape_string($msval),
mysql_real_escape_string($nowtime),
mysql_real_escape_string($fsuitem));
mysql_query($query) or die("Invalid query: " . mysql_error());
}
pcntl_alarm ( 90);// 定时器复位
// 继续查找剩余$buf中的匹配字符串
$buf = substr($restbuf,((strpos($restbuf,"#"))+1));//用掉一段,裁掉一段
continue;
}
if (!$buf = trim($buf)) {
continue;
}
*/
// 调试用
if ($buf == 'quit') {
socket_close($msgsock);
exit;
}
} //$buf 长度 < 3 ,继续接收数据
} //大循环结束
//end of while(1)
// break 2 come here
exit(0);
} // fi ($pid == 0)
socket_close($msgsock); //关闭父进程
// 关闭父进程
//捕捉僵尸进程
while(pcntl_waitpid(-1,$staturs,WNOHANG) > 0);
} while (true); //主进程结束
mysql_free_result($result);
socket_close($sock);
mysql_close($con);
?>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -