【问题标题】:How to automatically delete every x minutes? [closed]如何每x分钟自动删除一次? [关闭]
【发布时间】:2016-07-10 14:43:19
【问题描述】:

我使用 codeigniter 框架

例如我有A表,我希望我的系统每2分钟自动删除A表中的所有记录

能不能做到?

谢谢

【问题讨论】:

标签: php mysql codeigniter


【解决方案1】:

您可以使用 MySQL 事件调度程序。


先决条件:

你必须在你的 mysql 服务器中开启 event_scheduler。

检查事件调度器是ON还是OFF

SELECT @@event_scheduler;

要打开 event_scheduler ON,请运行以下查询:

SET GLOBAL event_scheduler = ON;


注意:如果你重启MYSQL Server,那么除非在配置文件中写入以下内容,否则事件调度器状态将被重置。

对于 Windows:my.ini 文件中将其写入 [mysqld] 部分

[mysqld]
event_scheduler=on

对于 Linux:my.cnf 文件中

[mysqld]
event_scheduler=on

事件:

以下事件将从名为tablename 的表中删除数据。

CREATE 
EVENT `deleteEvent`
ON SCHEDULE EVERY 2 MINUTE STARTS '2016-03-23 00:00:00'
ON COMPLETION NOT PRESERVE
ENABLE
DO
DELETE FROM tablename;

活动将首次在'2016-03-23 00:00:00'开始 之后,该事件将每隔 2 分钟安排一次,并会从您的表格中删除数据。

您可以使用Truncate 代替DELETE

TRUNCATE vs DELETE

【讨论】:

  • 非常感谢。它是否在本地主机上工作?
  • 不客气。如果要在 localhost mysql 服务器中执行此事件,请在 localhost mysql 服务器中执行上述工作。远程 mysql 服务器也是如此。
  • 我需要你的帮助。看这里:stackoverflow.com/questions/38175735/…
【解决方案2】:

最好和最快的方法是截断表而不是删除,所以你可以通过 mysql 自己的事件调度程序或通过 cronjob-

按事件调度程序-

DELIMITER $$

ALTER DEFINER=`root`@`localhost` EVENT `trun_table` ON SCHEDULE EVERY 2 MINUTE STARTS '2016-03-23 16:30:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN
        truncate table mytable;
    END$$

DELIMITER ;

如果 Mysql 在 Linux 上运行,则通过 cronjob;如果 Mysql 在 Windows 机器上运行,则通过任务管理器:

写“截断表mytable;”语法在一个文件中,并从 cronjob 或任务调度程序中调度它。

注意:如果您不想重置表中的 auto_increment id,请使用 delete 语句而不是 truncate,因为 truncate 语句会将其重置为 1。

【讨论】:

【解决方案3】:

您可以使用 Cronjob 每 2 分钟删除一次表 A 中的所有记录。将您的 PHP 脚本(带有删除功能)分配给您的网络服务器上的 Cronjob。

【讨论】:

  • 如果我的回答是可行的方法,请接受我的回答。
  • 还有其他我认为更好的答案
  • 好的,没问题! ;)
猜你喜欢
  • 1970-01-01
  • 2012-06-30
  • 1970-01-01
  • 2014-11-02
  • 2022-11-02
  • 2019-06-13
  • 1970-01-01
  • 2014-04-11
  • 2013-11-17
相关资源
最近更新 更多