关于使用MYSQL数据库中某个时间字段的时间执行任务

系统linux centOS6.5
数据库mysql5.5
后台程序php5.6

现在想实现根据mysql某表中谋个timestamp字段的值去定时给用户推送
因为数量太大了所以没有在插入的时候使用crontab命令

这样可以实现吗 需要使用插件也可以

是根据数据库的那个字段的时间去执行
比如一条数据的时间是 2020-03-22 20:02:11
是要到了这个时间去推送给用户
可能一张表里有几百条数据时间也不一样

这是执行一条数据的结果速度将近3秒
image.png

数据库中将近250万的数据
image.png

时间要精确到秒!!!

阅读 3.1k
4 个回答

我的理解是你在数据库里建了一张任务表,每种任务一条数据,每次执行完更新任务的最后执行时间,然后根据这个timestamp去判断是否已经执行任务;如果是这样的话我觉得你说的数据量很大是不是数据库设计的问题

什么样的推送?

单独启一个脚本,crontab 每秒轮询查一次表,取出到时间了但是还没发送的记录不可以吗?

对时间精确没太多要求可以每分钟甚至每三分钟轮询一次。

crontab可以做到分钟级定时,但是如果你的数据量很大,或者你要精确到秒级,就不合适了。
可以引入swoole到毫秒定时器,或者阿里云也有提供MNS服务。

新手上路,请多包涵

还是网上查了很多资料,用数据库的job做应该是最合适的

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题