我有一个动态的网页仪表板,显示温度,湿度,光线,噪音等数据。我有多个php文件,如temp.php,humidity.php,light.php和noise.php,负责检索数据从db然后我有多个js文件,它们基本上使用setTimeout并且每3秒从相应的php文件显示数据到html页面。
每个php文件都是这样的,例如 - humidity.php:
<?php
session_start();
if(isset($_SESSION["user_id"])){
include('db.php');
$unit = "820";
$stmt = $db->prepare("SELECT hv FROM humidity where
unitid=? order BY pk DESC LIMIT 1");
$stmt->execute([$unit]);
$humidity= $stmt->fetchColumn();
$humidity=round($humidity, 2, PHP_ROUND_HALF_ODD);
echo $humidity;
$stmt->closeCursor();
$db = null;
}
?>
每个js文件都是这样的,例如 - humidity.js:
$(document).ready(function() {
function foo() {
$('#showhumidity').load('humidity.php');
setTimeout(foo, 3000);
}
foo();
});
这个过程运行正常,但由于有多个php请求,整体处理时间不多(大约2秒)。我想将phps组合成一个php文件,将js文件合并为一个 - 因此只有一个php请求来检索所有数据。
最好的方法是什么?
答案 0 :(得分:1)
希望以下方法可以帮助你。
在你的组合php文件中:
<?php
$humidity = getHumidity(<parameter>);
$temp = getTemp(<parameter>);
$light = getLight(<parameter>);
$retArr = array("humidity" => $humidity,"light" => $light, "temp" => $temp);
echo json_encode($retArr);
function getHumidity($param) {
// write your logic here to calculate the humidity
}
function getTemp($param) {
// write your logic here to calculate the temp
}
function getLight($param) {
// write your logic here to calculate the Light
}
?>
在单个.js文件中:
jQuery(document).ready(function() {
function foo() {
jQuery.ajax({
url : <path of your php file>,
type : <Method GET/POST as per your requirement >,
dataType : json,
async : false,
success : function(data, status) {
//update your html element with data
},
}
setInterval(foo, 3000);
});