我是MySQL和PHP / Cron Jobs的新手,因此,如果大家都可以轻松地说明事件的位置等原因,那么无论如何,这都很棒。

问题:我有一个名为my_Table的表,它具有包含3个字段的条目:名称,年龄,时间戳。因此,例如有一行。山姆| 20 |无论何时
现在,当该行达到30分钟时,我希望将其删除,就像其他所有命中30分钟的行一样,谢谢大家的帮助,我已经阅读了其他答案,但就像我说我仍然是初学者一样并且不太了解人们在回答什么。谢谢您的帮助

如果我可以通过Cron Job或MySQL Event(我不知道如何设置事件)来做到这一点,那么对任何人来说都非常有用! :D

我的代码,用于在30分钟后删除(即使所有行还不到30分钟,也会删除所有行)

<?php
include_once('../config.php');

$con = mysql_connect(DB_HOST, DB_USER, DB_PASS);
mysql_select_db(DB_NAME);



$runpurge = mysql_query ("DELETE FROM my_table WHERE timestamp < NOW() - INTERVAL 30 MINUTE");






?>


主要显示代码:

$result = mysql_query ("SELECT * FROM cw_LFG ORDER BY `time` DESC ") or die(mysql_error);



while ($row=mysql_fetch_array($result)) {

    echo "<tbody>";
    echo "<tr><td>";
    echo strip_tags($row['cname']);
    echo "</td><td>";
    echo $row['level'];
    echo "</td><td>";
    echo strip_tags($row['region']);
    echo "</td><td width='100px'>";
    echo timeElapsed(strtotime($row['time']));
    echo "</td><td style='word-wrap: break-word'>";
    echo strip_tags($row['comment']);
    echo "</td></tr>";
    echo "</tbody>";



}

echo "</table>";
$curtime = date('Y-m-d H:i:s');
$curtimestr = strtotime($curtime);
function timeElapsed($time) {
    $elapsedTime = time() - $time;

    if ($elapsedTime < 1) {
        return 'Right now';
    }
    if ($elapsedTime < 60){
        return '< 1 Minute ago';
    }

最佳答案

SQL将是

DELETE FROM my_table
WHERE timestamp < NOW() - INTERVAL 30 MINUTE


编写一个执行此SQL的PHP​​脚本,并添加一个crontab条目,该条目每30分钟运行一次。或使用MySQL Event Scheduler定期运行它;在here中进行了描述。

关于php - 30分钟后使用Cron Jobs/Event Scheduler删除MySQL Row,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17415608/

10-10 07:10