2017-06-02 155 views
0

我有一個動態的網頁儀表板,顯示溫度,溼度,光線,噪音等數據。我有多個php文件,如temp.php,humidity.php,light.php和noise .php負責從db中檢索數據,然後我也有多個js文件,它們基本上都使用setTimeout,並且每隔3秒將相應php文件的數據顯示到html頁面。將多個PHP文件的請求合併爲一個請求

每個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請求就可以檢索所有數據。

這樣做的最佳方法是什麼?

+1

2秒調用PHP 3文件只是讀取數據庫中的值?我懷疑,合併這些文件會改善任何事情,因爲問題似乎是別的...... – dognose

回答

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); 
}); 
相關問題