Laravel进阶系列笔记--(九)Laravel win10下的简单定时任务
作者:温新
时间:2021-07-10
hi,我是温新,一名PHPer。
windows下使用Laravel定时任务相对于Linux来说复杂了不少。定时任务是一个经常需要用到的功能。对于定时任务,windows与Linux我都会写个记录。
Laravel对定时任务执行的时间段定义了很多方法,如每分钟执行,每两分钟执行...总之,用起来很方便。
定时任务在App\Console\Kernerl.php
文件中的schedule
方法中进行定义。
使用call方法实现简单的计划任务
第一步:编写定时任务
文件:app/Console/Kernel.php
<span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(119, 0, 136)">use</span> <span style="box-sizing: border-box;color: rgb(0, 0, 0)">Illuminate\Support\Facades\Log</span>;</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(119, 0, 136)">protected</span> <span style="box-sizing: border-box;color: rgb(119, 0, 136)">function</span> <span style="box-sizing: border-box;color: rgb(0, 0, 255)">schedule</span>(<span style="box-sizing: border-box;color: rgb(0, 0, 0)">Schedule</span> <span style="box-sizing: border-box;color: rgb(0, 85, 170)">$schedule</span>)</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">{</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"> <span style="box-sizing: border-box;color: rgb(0, 85, 170)">$schedule</span><span style="box-sizing: border-box;color: rgb(152, 26, 26)">-></span><span style="box-sizing: border-box;color: rgb(0, 0, 0)">call</span>(<span style="box-sizing: border-box;color: rgb(119, 0, 136)">function</span>(){</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"> <span style="box-sizing: border-box;color: rgb(170, 85, 0)">// 计划任务</span></span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"> <span style="box-sizing: border-box;color: rgb(0, 0, 0)">Log</span>::<span style="box-sizing: border-box;color: rgb(0, 0, 0)">info</span>(<span style="box-sizing: border-box;color: rgb(170, 17, 17)">'使用call方法的定时任务,每分钟执行一次'</span>);</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"> })<span style="box-sizing: border-box;color: rgb(152, 26, 26)">-></span><span style="box-sizing: border-box;color: rgb(0, 0, 0)">everyMinute</span>();</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">}</span>
第二步:终端手动执行定时任务
<span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(0, 0, 0)">php</span> <span style="box-sizing: border-box;color: rgb(0, 0, 0)">artisan</span> <span style="box-sizing: border-box;color: rgb(0, 0, 0)">schedule</span>:<span style="box-sizing: border-box;color: rgb(0, 0, 0)">run</span></span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(170, 85, 0)">// 返回信息</span></span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">[<span style="box-sizing: border-box;color: rgb(17, 102, 68)">2021</span><span style="box-sizing: border-box;color: rgb(152, 26, 26)">-</span><span style="box-sizing: border-box;color: rgb(17, 102, 68)">07</span><span style="box-sizing: border-box;color: rgb(152, 26, 26)">-</span><span style="box-sizing: border-box;color: rgb(17, 102, 68)">09</span><span style="box-sizing: border-box;color: rgb(0, 0, 0)">T16</span>:<span style="box-sizing: border-box;color: rgb(17, 102, 68)">15</span>:<span style="box-sizing: border-box;color: rgb(17, 102, 68)">44</span><span style="box-sizing: border-box;color: rgb(152, 26, 26)">+</span><span style="box-sizing: border-box;color: rgb(17, 102, 68)">00</span>:<span style="box-sizing: border-box;color: rgb(17, 102, 68)">00</span>] <span style="box-sizing: border-box;color: rgb(0, 0, 0)">Running</span> <span style="box-sizing: border-box;color: rgb(0, 0, 0)">scheduled</span> <span style="box-sizing: border-box;color: rgb(0, 0, 0)">command</span>: <span style="box-sizing: border-box;color: rgb(0, 0, 0)">Callback</span></span>
手动执行是一件很麻烦的事情,定时任务就要定时执行。windows中实现Laravel定时还是一件很麻烦的事件。为了节约篇幅,现在将定时任务分开来写。
第三步:创建windows执行的脚本任务
<span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(0, 0, 0)">h</span>:</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(0, 0, 0)">cd</span> <span style="box-sizing: border-box;color: rgb(0, 0, 0)">H</span>:<span style="box-sizing: border-box;color: rgb(0, 0, 0)">\phpstudy_pro\WWW\HyStudy\Laravel\laravel</span><span style="box-sizing: border-box;color: rgb(152, 26, 26)">-</span><span style="box-sizing: border-box;color: rgb(0, 0, 0)">demo02</span></span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(0, 0, 0)">php</span> <span style="box-sizing: border-box;color: rgb(0, 0, 0)">artisan</span> <span style="box-sizing: border-box;color: rgb(0, 0, 0)">schedule</span>:<span style="box-sizing: border-box;color: rgb(0, 0, 0)">run</span> <span style="box-sizing: border-box;color: rgb(17, 102, 68)">1</span><span style="box-sizing: border-box;color: rgb(152, 26, 26)">>></span> <span style="box-sizing: border-box;color: rgb(0, 0, 0)">NUL</span> <span style="box-sizing: border-box;color: rgb(17, 102, 68)">2</span><span style="box-sizing: border-box;color: rgb(152, 26, 26)">>&</span><span style="box-sizing: border-box;color: rgb(17, 102, 68)">1</span></span>
将上述内容保存为bat
文件,如我保存为schedule.bat
第四步:windows10实现定时任务
1)打开定时任务
win
+R
后输入taskschd.msc
,如下图:
2)创建基本任务
3)编写[常规信息]
4)[触发器]选项,然后新建触发器
5)[操作]新建条件
程序或脚本 选择第三步创建的schedule.bat
文件。
这样定时任务就创建好啦,然后就等待执行吧~
定时任务执行后,会发现,每执行一次会有一个黑窗口弹出并快速消失了,这个很不友好。
第五步:因此定时任务执行时的黑窗口
编写如下内容,并将其保存为以.vbs
结尾的文件,如我用的是laravel_schedule.vbs
。
<span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(0, 0, 0)">Set</span> <span style="box-sizing: border-box;color: rgb(0, 0, 0)">ws</span> <span style="box-sizing: border-box;color: rgb(152, 26, 26)">=</span> <span style="box-sizing: border-box;color: rgb(0, 0, 0)">CreateObject</span>(<span style="box-sizing: border-box;color: rgb(170, 17, 17)">"Wscript.Shell"</span>) </span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(0, 0, 0)">ws</span>.<span style="box-sizing: border-box;color: rgb(0, 0, 0)">run</span> <span style="box-sizing: border-box;color: rgb(170, 17, 17)">"cmd /c C:\Users\45796\Desktop\schedule.bat"</span>,<span style="box-sizing: border-box;color: rgb(0, 0, 0)">vbhide</span></span>
注意:关于schedule.bat
与laravel_schedule.vbs
这两个文件的路径最好一致。我这里将这两个文件全部放在地桌面。
我是温新
每天进步一点点,就一点点
请登录后再评论