公司现在要求实现这个一个功能:
用户在网站充值后,会在mysql的表中形成一条记录,其中有一个状态码status字段,如果20分钟后充值没有成功的话,这个字段要自动改为0,表示本次充值失效,同时要给用户发一封邮件。
现在我自己的设想是这样的:利用mysql的定时任务和存储过程procedure来解决。具体是,当用户充值时,向数据库插入记录,同时创建定时任务event和procedure,20分钟后event会执行procedure查询此记录,如果状态为未成功,那么将状态码改为0,并且删除计划任务和存储过程,并且通知php发送邮件。
但问题是我不知道在改完状态码后mysql如何通知php?
然后想问一下我上面的这种实现方法是否合理?如果有其他解决方法具体要怎么做,要用到何种技术?
请各位高手帮忙解答!感激不尽!!

解决方案 »

  1.   

    mysql如何通知php?
    不需要通知,可以用php轮询。
    crontab一个php脚本(如每10分钟运行一次或者5分钟),定时去查数据库中的相应status。
      

  2.   


    但如果不能使用Linux的crontab要怎么实现这个功能呢?
      

  3.   


    但如果不能使用Linux的crontab要怎么实现这个功能呢?不能用crontab还是系统是windows或者其他平台。windows也有定时任务的。
    如果不用定时任务,也可以用长脚本(while(true))模拟定时任务,每几分钟读取一下数据库中的数据。
      

  4.   

    这个需要用crontab脚本定时执行,IIS下也有定时脚本呀,如果用其他方法,很不划算,也就是说,你mysql执行可能随时执行,那么PHP也是需要随时执行的...
      

  5.   

    简单的话,就php做一个daemon守护程序(其实就是死循环),定时去查数据库中的相应status。具体可以看看
    PHP 守护进程类
      

  6.   

    你可以写一个php 加上sleep函数,在做完之后就跳sleep 它20分钟,之后在去进行相应判断和操作
      

  7.   

    不过好像也不行哦,那样网页不就要等很久才能关闭。算了这个可以参考一下WordPress的自动发布文章的代码