前言
laravel的任务调度是很好用的,因为Laravel提供了平滑而又富有表现力地调度器,并且服务器上只需要一个Cron条目即可,这使我们从编写手动写crontab中解放出来,使得程序重新获得定时任务的控制权。
但是,我们发现laravel的文档中只提供了linux/unix下的解决方案,但是我们大多数时候本地开发环境都是在windows下搭建的,所以,我们需要解决这些问题。
问题
本篇博客主要是围绕着如下几个问题展开
1. windows下,怎么使用laravel任务调度?
2. windows的计划任务能否替代crontab的工作?
3. 如何更好的使用windows的计划任务和laravel搭档?
解决方案
主要用到了windows任务计划程序,bat批处理,vbs脚本,有兴趣可以了解。
通过计划任务和批处理
这也是大家用到最多的方式了,stackoverflow一大半的回答都是这个。
1. 首先右键->新建->文本文档,任何位置都可以。
2. 将如下代码拷贝进去。第一行的意思是进去到项目目录,第二行语句是执行artisan命令
cd /d E:\\WWW\laravel\
php artisan schedule:run 1>> NUL 2>&1
3. 然后另存为.bat的文件就好啦,名字随意,后缀.bat。
4.然后就是创建计划任务,步骤图片如下所示,填写红框区域就好了
这个时候就会去调用laravel的任务调度了(前提是你已经在laravel里面编写好了任务调度),但是我们会发现,没过一分钟,都会有个dos命令的黑框弹出来,然后运行完了之后再关闭,这样会分散我们的注意力,于是就有了改进方案,请看方案二。
通过vb脚本,实现自动任务的静默执行
前提是,你已经做完了第一步所有操作,会发现dos会自动弹出来执行程序,一分钟一次(下图所示),人都会逼疯,所以有了此方案。