我在SO看到了一些类似的问题,但没有一个人回答过我.我之前从未听说过CRON,而且我是Laravel的新手.我需要的是每周运行一次Task来对我的数据库(MySql)执行一些操作,比如每个星期天凌晨12:00.我怎么能实现这个目标?
Ant*_*iro 10
如果你可以使用cron,你只需执行即可
crontab -e
Run Code Online (Sandbox Code Playgroud)
或者,如果您需要以root身份运行:
sudo crontab -e
Run Code Online (Sandbox Code Playgroud)
这将打开一个文本编辑器,这样你就可以修改你的crontab,每个预定的命令都有一行,如下所示:
1 0 * * * php /var/www/myBlog/artisan task:run
Run Code Online (Sandbox Code Playgroud)
这个命令将在每天的第一分钟(0h01或12h01am)执行.
这是对它的解释:
* * * * * <command to execute>
? ? ? ? ?
? ? ? ? ?
? ? ? ? ?
? ? ? ? ?????? day of week (0 - 6) (0 to 6 are Sunday to Saturday, or use names)
? ? ? ??????????? month (1 - 12)
? ? ???????????????? day of month (1 - 31)
? ????????????????????? hour (0 - 23)
?????????????????????????? min (0 - 59)
Run Code Online (Sandbox Code Playgroud)
因此,在您的情况下,您将创建一个这样的行:
0 12 * * 0 <command to execute>
Run Code Online (Sandbox Code Playgroud)
但是你如何为Laravel的任务做到这一点?有很多方法,其中一个是我的第一个例子:创建一个工匠命令(任务:运行),然后只是运行工匠,或者你可以在你的应用程序中创建一个路径,每次它被命中时都会调用你的任务:
Route::get('/task/run',array('uses'=>'TaskController@run'));
Run Code Online (Sandbox Code Playgroud)
然后你只需要添加你的crontab,但你需要点击你的网址,如wget或curl:
0 12 * * 0 curl http://mysite.com/run/task
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6346 次 |
| 最近记录: |