少用但始终都会碰到 - 定时执行怎么实现

  • 作者:KK

  • 发表日期:2016.10.20


要点速读

  • 方案1. 各操作系统都有定时任务功能,把你要定时执行的脚本注册上去,人家系统到了点数会自动帮你执行

  • 方案2. 写cli程序,里面一个while死循环持续侦测系统时间再触发,然后后台运行这个程序(这个其实是无限循环事件轮询)

  • 方案3. 借助其它工具实现,比如Jenkins(一个持续集成平台),说到底还不是跟操作系统的定时任务差不多一种概念

没有别的神奇的方法了,面对现实吧!你只能三选一


正文

大项目、比较标准化的话推荐方案3,毕竟这里还能做很多相关的自动集成事项,个人喜欢用持续集成来做定时监控

但普通项目我推荐方案1

以Linux系统为例子,前提是你先了解crontab这个定时任务管理工具的基本使用

然后就很简单,准备一个处理定时事务的PHP脚本,把它添加到crontab里就好了

比如我这个凌晨2点执行的任务:

0 2 * * * /usr/local/php/bin/php /data/www/project1/task1.php

而在Windows系统中也可以用这样的思路登记定时任务,具体自己搜索Windows的定时任务怎么安装,我基本是用一次查一次,因为大多数在使用Linux搞这些


使用方案2的话很少有,压根见都没见过,但这是可以实现的,不过通过死循环侦测系统时间

何苦呢,直接利用系统的定时器会更合适呀,人家有优化的,基于事件的呀

你这样做其实等于自己实现了一个事件监听,而且还是最低效果的直接轮询