mysql - 如何使用 MySQL 或 PHP 在特定时间运行查询?

标签 mysql sql ajax

是否可以在特定时间(例如每秒/分钟)运行查询。顺便说一下,我正在构建一个简单的拍卖系统,我所说的查询是检查是否有已经过期的产品。意味着它们的 datetime_end 小于当前日期和时间。 所以我有一个这样的查询:

SELECT id, datetime_end FROM auction_product WHERE datetime_end < NOW() AND `status` = 0;

确定是否有已过期的产品后,我将创建一个查询,将其状态更改为 1表示状态为cancelled/closed .

MySQL 中是否有可以运行特定查询的函数?就像自动查询一样。或者我应该制作一个每秒运行一次的 Ajax 并检查是否有过期产品?你能给我一些关于这个的想法吗? 因为在我当前的设置中,我只是将 AJAX 放在产品页面和主页中。意味着如果用户在其他页面,我的 AJAX 将不会运行。所以我想我会将我创建的 AJAX 放在页眉或页脚或全局 JS 中的某个位置。如果我这样做会影响页面加载的性能吗?因为它每秒都会运行一次。

这就是全部的感谢。我希望你能给我一些关于这个的想法。 :)

最佳答案

您可以使用计划事件在 MySQL 中执行此操作,例如:

CREATE EVENT IF NOT EXISTS expire_products
ON SCHEDULE 
EVERY 1 MINUTE
STARTS CURRENT_TIMESTAMP 
DO
  <insert your update statement here>;

您需要首先通过命令行参数启用事件调度程序:

 --event-scheduler=ON 

或 my.cnf/my.ini 选项:

   event_scheduler=ON 

或者在 MySQL 中运行以下命令:

   SET GLOBAL event_scheduler = ON;

参见 https://dev.mysql.com/doc/refman/5.7/en/create-event.html了解更多详情。

关于mysql - 如何使用 MySQL 或 PHP 在特定时间运行查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38886839/

相关文章:

php - mySQL 查询不工作

sql - 服务器时区偏移值

javascript - 在 JS 中序列化输入,在 php 中返回字符串

javascript - 如何在没有 cgi 的情况下从 python 到 JavaScript 获取 float

php - JQuery 表帖子 用 PHP 计算总和

javascript - Sequelize hasOne 关联限制

mysql - 嵌套集查询以检索每个节点的所有祖先

mysql - 使用 MySQL 3 个表中的数据查找总行数

mysql - 从 SQL 表中选择每个唯一 ID 中的 3 个

SQL 最小值和计数