🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
在项目的开发过程中经常会有定时任务的需求,例如按时自动处理订单状态或者需要做某个接口的队列。可是PHP本身对上述场景的支持并是不很好,虽然可以通过配置响应时间的方法让PHP进程不结束,但从测试和易维护的角度来说,**最实用的方案是通过服务器定时任务来实现**。由于配置Linux定时任务会涉及到很多方面的知识,对于Linux不太熟的开发者容易望而却步,本文就以最简单的方式将这种方案实现落地,希望对大家有帮助。 :-: ![](https://img.kancloud.cn/e9/d9/e9d9b253af14061507e98751a3285eac_455x541.png) 流程图 ### 编辑crontab文件 每个用户都拥有自己的crontab文件,文件包含送交守护进程的一系列指令,通常使用下面的命令对该文件进行编辑: ~~~ > crontab -e ~~~ 定时的语法如下: ~~~ * * * * * /WWW/learnlinux/sometask.sh 分钟 小时 日 月 星期 命令 ~~~ 上面的意思是,每1分钟执行一次sometask.sh。5个\*号的位置代表的是执行任务的时间,语法是这样的: ~~~ “\*”代表所有, “/”代表循环周期, “-”代表从某个数字到某个数字的区间, “,”分开几个离散的数字 ~~~ 最简单的写法如下: ~~~ 30 * * * * 代表每个小时的第30分钟执行一次 30 6 * * * 代表每天的6点30分执行一次 30 6 15 * * 代表每个月的15号6点30分执行一次 30 6 15 5 * 代表每年的5月15号6点30分执行一次 也可以用星期表示,0代表周日: 30 6 * * 0 代表每个周日的6点30执行一次 ~~~ 稍微复杂一点: ~~~ */5 * * * * 代表每隔5分钟执行一次 30 6 */5 * * 代表每隔5天就在6点30分执行一次 0 2-5 * * * 代表每天的2点到5点钟的第0分钟执行一次 20,40 * * * * 代表每个小时的第20和第40分钟执行一次 ~~~ ### 创建可执行文件 我们既然规定每分钟执行一次sometask.sh那么就到相应的目录下去创建该文件: ~~~ > cd /WWW/learnlinux/ > vim sometask.sh ~~~ 这里使用vim创建文件,编辑方法上文中有,sometask.sh文件内容如下: ~~~ #!/bin/sh curl http://localhost/learnlinux/ ~~~ 该文件中第一行为固定写法,第二行用于指定访问的页面URL,`curl`命令可以以GET的方式访问后面的地址,注意:地址不需要添加引号。你可以将这里的URL修改为实际项目中需要被定时访问的页面。