关闭

mysql的定时任务学习

101人阅读 评论(0) 收藏 举报
分类:

最近弄公司的一个电商项目时遇到客户的一个需求:每天定时返还会员红包。这个电商项目,用的是ecshop的框架。由于ecshop是项目单一入口的mvc框架,我就想着在项目的入口文件index.php处触发windows定时任务。

大致思路是这样的:每天定时去访问入口文件,在入口文件中判断访问的时间,如果满足条件,则发放红包,并把红包发放状态修改为已发放。再建立一个文件,用于每天红包发放状态的重置操作。

思路有了就开始动手做,首先代码实现,接着在一个服务器上编写windows的定时任务。测试一下,OK,大功告成。紧接着就是给项目经理说,红包自动返功能已经实现,上线,再次测试,最后就是告知客户,红包自动返功能已经实现。

在这里我要先说明一下,我这里是采用windows定时任务+.php程序定时访问页面实现的红包自动返功能。

不料第二天早上刚来就接到了客户的电话,今天的红包怎么没返啊?

我第一感觉就是不应该啊,本地和远程测试都没问题啊。我首先看了下远程的定时任务,正常执行了,程序中设置的时间也OK,那是什么问题呢?仔细想了一下,会不会是DNS解析出了问题?因为是两个不同的服务器(项目所在的服务器与建立的定时任务并不在一个服务器上),域名解析为ip地址的时间太长,导致失败。

于是,我又换了一种思路:在电商项目的服务器上建立定时任务,这次,我没采用域名访问(当然也可以设置服务器上的hosts文件,省去域名解析过程),而是直接采用了localhost访问。心想着,这次应该没问题了吧?测试,上线。不料第二天客户又反馈说红包没发放。

这次是彻底崩溃了,定时任务执行正常,还能是什么问题?莫非是数据库服务器的问题?在这里说明一下,我们采用的是mysql数据库。

事到如今,只有一种方法能够保证功能的稳定了:在mysql数据库中创建定时任务,这样就省去了域名解析、程序与数据库的交互,只要数据库服务器正常启动着,定时任务就可以正常执行。

OK,最终解决了问题。



0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:222606次
    • 积分:3593
    • 等级:
    • 排名:第9147名
    • 原创:148篇
    • 转载:58篇
    • 译文:0篇
    • 评论:13条
    最新评论