我们是一家纺织品制造厂,在自动化生产线上有许多PLC。我们希望创建一个可通过Internet访问的显示器,它将以易于理解的格式显示关键性能指标。
我是初级Web开发人员/初级SQL DBA /初级系统管理员,充当我们美国站点的主要网络/系统管理员和DBA。
我试图找出如何解决问题,而不必学习一门全新的语言。我在PHP方面很有经验,所以我一直在尝试使用它。
基本上,我已经设法使系统正常运行,但我想了解这是否是一个糟糕的解决方案和/或是否有更好的解决方案我应该努力。
请花一点时间浏览以下代码并告诉我您的想法。
一般概念是个别查询将存储在单独的包含文件中,并将使用javascript定期重新加载。
<!DOCTYPE HTML>
<html>
<head>
<title>Performance Display</title>
<link href="https://fonts.googleapis.com/css?family=Noto+Sans" rel="stylesheet">
<link rel="stylesheet" type="text/css" href="styles/normalize.css" />
<link rel="stylesheet" type="text/css" href="styles/main.css" />
</head>
<body onload="updateClock(); setInterval('updateClock()', 1000);
loadData(); setInterval('loadData()', 30000);">
<div id="container">
<header>
<div id="product"> </div>
<div id="data"> </div>
<div id="clock"> </div>
</header>
<table id="product_table">
<thead>
<tr>
<th> </th>
<th>ACTUAL</th>
<th>STANDARD</th>
</tr>
</thead>
<tbody>
<tr>
<td id="output_actual"> </td>
<td id="output_standard"> </td>
</tr>
<tr>
<td id="speed_actual"> </td>
<td id="speed_standard"> </td>
</tr>
</tbody>
</table>
</div>
</body>
<script src="https://code.jquery.com/jquery-1.10.2.js"></script>
<script type="text/javascript" src="scripts/functions.js"></script>
</html>
function updateClock() {
// This is a standard clock function removed to avoid unnecessary clutter.
};
function loadData() {
$("#date").load("includes/date.php");
$("#product").load("includes/product.php");
$("#output_actual").load("includes/output_actual.php");
$("#speed_actual").load("includes/speed_actual.php");
$("#output_standard").load("includes/output_standard.php");
$("#speed_standard").load("includes/speed_standard.php");
};
<?php
include_once("connections.php");
$sql = "SELECT TOP 1 * FROM Tbl_Perf_Data_Help ORDER BY Date_Time DESC";
$stmt = sqlsrv_query($productionUSA->connect(), $sql);
while($obj = sqlsrv_fetch_object($stmt)) {
echo "PRODUCT ".$obj->Current_Product;
}
<?php
class connection {
private $serverName;
private $connInfo;
public $conn;
public function __construct($serverName, $db, $usr, $pwd) {
$this->serverName = $serverName;
$this->connInfo = array("Database"=>$db, "UID"=>$usr, "PWD"=>$pwd);
}
public function connect() {
$this->conn = sqlsrv_connect($this->serverName, $this->connInfo);
if (($this->conn === false) or (sqlsrv_begin_transaction($this->conn) === false)) {
die(print_r(sqlsrv_errors(), true));
}
return $this->conn;
sqlsrv_close($this->conn);
}
}
$productionUSA = new connection("dbserv", "productionDB", "admin", "CorrectHorseBatteryStaple");
如您所见,每个动态数据每30秒重新加载为一个php页面。我认为这可能是不优雅的原因是性能显示的完整代码有大约58个字段。这是58个单独的php文件,如果我理解正确,可能有58个与我们数据库的不同连接。
非常感谢任何指导或建议!
答案 0 :(得分:0)
老实说,你可以制作一个静态页面,每隔N秒<meta http-equiv="refresh" content="30">
刷新一次元数据。
按照目前的方式进行操作是一项工作,我会让每个php页面“回显”一个json_encoded字符串,以便您可以根据需要格式化数据。这些页面可以用ajax调用,但是通过你的技能水平的声音,我会使用静态页面。