写在前面的话:
其实laravel的任务调度(定时任务)在文档中已经写得很清楚了,只是对于刚入门或者还不是很熟练的小伙伴们来说,还是有点难度的,下面我就按照自己常做的步骤来写个文档,希望可以帮助自己的同时也可以帮助到小伙伴们:
一、编写任务调度
- 找到目录
App\Console\Kernel
类的schedule
方法中定义所有调度任务。在编写的时候,注意可以定义多个任务
,如何定义下面有简单的小举例,建议使用命令或者队列来处理更佳,更多方式请查看官方文档(任务调度)
protected function schedule(Schedule $schedule)
{
$uid = XMAgentUserData ::getAllOfAll();
// 编写第一个每天执行的任务
$schedule -> call( function() use ( $uid ) {
collect( $uid ) -> map( function( $uid ) {
XMAgentUserData ::getUidToRecord( $uid -> uid );
} );
} ) -> daily();
// 编写第二个每周六执行的任务
$schedule -> call( function() use ( $uid ) {
collect( $uid ) -> map( function( $uid ) {
XMAgentUserData ::getLastWeekCommission( $uid -> uid );
} );
} ) -> weekly() -> saturdays();
}
二、启动调度器
- 1、用命令
crontab -l
查看现有的任务,出现no crontab for root
,请先安装crontab
,出现空表示没任务,出现其他请具体分析(一般是存在任务)
- 2、用命令
crontab -e
添加定时任务
* * * * * /usr/local/bin/php /usr/local/var/www/test/artisan schedule:run >> /dev/null 2>&1
格式说明:
***** 你的命令
前面的5个 * 分别代表分钟、小时、天、月、星期。
分钟:0-59的整数,默认和/1 代表1分钟。
小时:0-23的整数。
天:1-31的整数。
月:1-12的整数。
星期:0-7的整数,0和7都代表星期日。注意:要注意
php
和artisan
的目录
php
是你php
软件设置的命令目录(一定要正确)
artisan
是你laravel中
使用artisan
命令的目录(一定要正确)
- 3、启动定时器
情况一:正常情况(系统有service命令)
service crond restart #重启服务命令
service crond start #启动服务命令
service crond stop #停止服务命令
情况二:当linux发行的版本没有service这个命令时候,用如下命令进行停止启动:
/etc/init.d/cron空格stop #停止服务
/etc/init.d/cron空格start #启动服务
其它建议:
如果你是使用了集群或者负载均衡……,laravel
在这种情况下一定要 onOneServer()
避免数据重复,必须使用 memcached
或 redis
作为你应用程序的默认缓存驱动程序。 另外,所有服务器都必须与同一个中央缓存服务器进行通信。
网友评论