统计数据记录并删除旧版

时间:2016-01-12 19:07:51

标签: php mysql phpmyadmin cron records

我正在研究太阳能电池板的数据监控器。 现在我正在开发有限的空间,并获取大量数据,这些数据正在数据库中记录。 为了缩小我的空间,我试图找到一种方法使数据表每15分钟计算一次,并将其存储到一个新表中,并删除旧表。

我尝试用cronjob做这个,后来尝试制作一个可以处理它的php脚本。

现在代码没有接近我计划的内容,而且我遇到了这个问题,我知道可能有人知道这个问题的答案。 我在搜索网站时遇到了类似的问题,但没有遇到“计数和删除”问题。 这是为了限制它使用的空间。

简单地说,我正试图找到一种方法用PHP来计算并将数据记录从“逆变器”存储到“inverters_day”,并从“逆变器”中删除激动记录。

数据表如下:

| timestamp  | timestamp | No | CURRENT_TIMESTAMP
| inverter   | int(11)   | No |
| wh         | int(11)   | No |
| dcp        | int(11)   | No |
| dcc        | float     | No |
| efficiency | float     | No |
| acf        | int(11)   | No |
| acv        | float     | No  |
| temp       | float     | No  |
| status     | int(11)   | No  |

数据示例:

|2016-01-08 08:34:24|110134878|889901|0|0.05|0|49|55|2|1
|2016-01-08 08:34:59|110134878|889901|0|0.05|0|49|55|2|1
|2016-01-08 08:35:23|110048316|643076|0|0.05|0|49|55|1|1

Inverter_day与上面的一个重复,结构相同。

抱歉,我忘了添加我试过的代码。

if ($sql = mysqli_query ($conn, "SELECT COUNT (*) FROM logs WHERE timestamp < NOW() - INTERVAL 15 MINUTES")) {
    $row_slt = mysqli_num_rows($sql);
    if ($row_slt > 0 ) {
        $sql = mysqli_query ($conn, "INSERT INTO inverter_day (timestamp, inverter, wh, dcp, dcc, efficiency, acf, acv, temp, status) SELECT timestamp, inverter, wh, dcp, dcc, efficiency, acf, acv, temp, status FROM logs WHERE timestamp NOT IN (select timestamp from inverter_day)");
    } else if ($row_slt == 0) {
        echo "<br> The Tables are up to date <br>";
    } else {
        echo "<br> Oops something went wrong. Please try again";
    }
}

1 个答案:

答案 0 :(得分:0)

由于我对此没有任何进一步的帮助,我只是继续将这部分留在后面,直到我遇到了INSERT SELECT功能。

问题的解决方案是使用:

$query = "INSERT INTO enecsys_day (id, wh, dcpower, dccurrent, efficiency, acfreq, acvolt, temp, state) SELECT id, SUM(wh), SUM(dcpower), SUM(dccurrent), SUM(efficiency), SUM(acfreq), SUM(acvolt), SUM(temp), SUM(state) FROM enecsys GROUP BY id HAVING COUNT(id) > 1";

我使用的完整代码:

<?php
                mysql_connect($servername,$username,$password);
                mysql_select_db($database);
                $query = "INSERT INTO enecsys_day (id, wh, dcpower, dccurrent, efficiency, acfreq, acvolt, temp, state) SELECT id, SUM(wh), SUM(dcpower), SUM(dccurrent), SUM(efficiency), SUM(acfreq), SUM(acvolt), SUM(temp), SUM(state) FROM enecsys GROUP BY id HAVING COUNT(id) > 1";
                $resultaat = mysql_query($query);
                while ($row = mysql_fetch_array($resultaat))
                {
            ?>
            <tr>
                <td><?php $row["id"]; ?></td>
                <td><?php $row["SUM(wh)"]; ?></td>
            </tr>

            <br />
            <?php

        }


$delete = "DELETE FROM enecsys";
$dresultaat = mysql_query($delete);

            ?>