如何让MySQL在一段时间内运行查询?

时间:2011-07-14 01:58:19

标签: php mysql

我正在创建一个Web应用程序,其中需要处理表的每一行。我正在为每个表行生成一个子PHP进程。我正在实现一个安全机制,所以如果PHP进程被中断处理一行,将产生一个新的PHP进程来处理所述行。为此,我将创建一个新表,其中所有PHP进程每10秒左右检查一次。我需要MySQL删除所有尚未检查5分钟或更长时间的行,因此我的应用程序将知道创建一个新的PHP子进程来处理该行。

我知道有可能让MySQL在一段时间内运行查询,但我不知道如何。

〜输入stackoverflow~


编辑:我希望学习如何做到这一点100%的MySQL。是否无法将MySQL设置为每小时或每天的特定时间运行查询?

4 个答案:

答案 0 :(得分:7)

crontab的。您可以使用mysql客户端(mysql -uusername -ppassword dbname -e 'query here')直接运行查询,也可以安排运行查询的PHP脚本。

DELETE FROM table WHERE checked_into < CURRENT_TIMESTAMP - INTERVAL 5 MINUTE

答案 1 :(得分:5)

  

MySQL事件是根据计划运行的任务。因此,我们有时将它们称为预定事件。 ...从概念上讲,这类似于Unix crontab(也称为“cron作业”)或Windows任务计划程序的想法。

http://dev.mysql.com/doc/refman/5.1/en/events-overview.html

这是可爱的语法:http://dev.mysql.com/doc/refman/5.1/en/create-event.html

答案 2 :(得分:0)

在某个时间间隔内运行MySQL查询的一种方法是设置一个cron作业。假设您已完全访问您的网络服务器,这应该是可行的。您只需创建一个PHP页面,该页面执行您希望每X时间间隔发生的SQL操作,然后将脚本设置为通过cron作业在该时间间隔上运行。更多细节:http://en.wikipedia.org/wiki/Cron

答案 3 :(得分:0)

我认为你要找的是event scheduler,首先在MySQL 5.1中引入。

另外,也许您应该重新设计一下程序,以避免额外的事件调度程序层: 如果进程尚未签入一段时间,而不是删除行,则只需要一个带有签入时间戳的列。然后,如果某行具有非常旧的时间戳检查,则可以为其生成新的PHP进程。