统计数据记录并删除旧的一次

Count Data Records and delete old once

我正在研究太阳能电池板的数据监视器。 现在我正在处理有限的 space,并获取大量记录在数据库中的数据。 为了缩小我的 space 我试图找到一种方法让数据 table 每 15 分钟计算一次所有内容,并将其存储到一个新的 table 中,并删除旧的 [=39] =]s.

我试着用一个 cronjob 来做这件事,后来又试着制作一个 php 脚本来处理它。

现在该代码与我计划的不相近,我被困在这个问题上,我知道可能有人知道这个问题的答案。 我在搜索网站时遇到了类似的问题,但没有遇到 "Count and Delete" 问题。 这是为了限制它使用的space。

简单地说,我正在尝试用php找到一种方法,让它计算并存储从"inverters"到"inverters_day"的数据记录,并从中删除existing记录"inverters".

数据table如下:

| 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";
    }
}

因为我在这方面没有得到任何进一步的帮助,所以我继续把这部分留在后面,直到我遇到 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);

            ?>