将多个PHP文件的请求合并到一个请求中

时间:2017-06-02 04:02:54

标签: javascript php

我有一个动态的网页仪表板,显示温度,湿度,光线,噪音等数据。我有多个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请求来检索所有数据。

最好的方法是什么?

1 个答案:

答案 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);
});