Как периодически получать данные из таблицы PSQL - PullRequest
0 голосов
/ 08 ноября 2018

Я получаю данные из таблицы psql и передаю их в javascript в виде массива json для отображения в виде диаграммы временных рядов. Переданные данные должны быть в массиве from.

Поскольку данные в таблице периодически обновляются, мне нужно постоянно получать данные из psql, например. каждые 15 минут и передавать обновленный массив в JavaScript.

Я ищу, но пока не могу найти решение. У меня вопрос, как я могу периодически получать данные из PSQL.

Вот мой код:

<code><!DOCTYPE html>
<html lang="en">

<head>
    <script>
        var Device_Data;
        var time, batt;
        var timeArray = [];
        var battArray = [];
        var N = 12;
        for (i = 0; i < N; i++) {
            timeArray.push(0);
            battArray.push(0); }

    function dspChrt(Device_Data) { 

        console.log(Device_Data[0].date_time);
        console.log(Device_Data[1].battery_voltage_mv);

        time = Device_Data[0].date_time;
        batt = Device_Data[1].battery_voltage_mv;

        timeArray.shift();
        timeArray.push(time);
        battArray.shift();
        battArray.push(batt);

    </script>

</head>
<body> 

  <?php
    require("Connection.php");
    $stmt = $conn->prepare("Select date_time, battery_voltage_mv FROM measuring_device_statuses order by date_time desc limit 12");
    $stmt->execute();

    $result = $stmt->setFetchMode(PDO::FETCH_ASSOC);
    $WData = $stmt->fetchAll();

    /*
    echo "<pre>".print_r($WData, true)."
"; умереть(); * / ?> var WData = <? php print_r (json_encode ($ WData));?>; //console.log(WData); dspChrt (WDATA);

Ответы [ 2 ]

0 голосов
/ 08 ноября 2018

Вы можете использовать AJAX для этой цели.

HTML

<div id="myDiv"></div>

JavaScript

<script>

window.onload = function(){
loadDoc();
SetInverval(loadDoc, (10000 * 60 * 15)); // Perform function every fifteen minutes
}

function loadDoc() {
var div = document.getElementById("myDiv"); // Get Div
div.innerHTML = ""; // Set to nothing
  var xhttp = new XMLHttpRequest(); // Create new XML object
  xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) { // If successful
     div.innerHTML = this.responseText; // Display result
    }
  };
  xhttp.open("GET", "loadDoc.php", true);
  xhttp.send();
}

Это должно быть в вашем PHP-файле с именем loadDoc.php или в любом другом месте, которое вы хотите заменить.

<code><?php
    require("Connection.php");
    $stmt = $conn->prepare("SELECT date_time, battery_voltage_mv FROM measuring_device_statuses ORDER BY date_time DESC LIMIT 12");
    $stmt->execute();

    //$result = $stmt->setFetchMode(PDO::FETCH_ASSOC);
    $WData = $stmt->fetchAll();
    $stmt->close();


    echo "<pre>".print_r($WData, true)."
"; умереть(); ?>
0 голосов
/ 08 ноября 2018

Сохраните ваши данные php-скрипт в каком-то файле "fetch.php", и через функцию интервала набора javascript вызывайте его периодически, например, этот код печатает предупреждение каждые 3 секунды.

setInterval(function(){ alert("Hello"); }, 3000);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...