>注意:以php-cli模式运行的任务,运行定时任务的用户必须和运行php-fpm进程的用户保持一致。
>假设运行php-fpm的用户是 ***www***,则需要把这些定时任务放到 ***www*** 用户的crontab list中
>注意:以***www***用户运行crontab时,要确保有/home/www家目录
crontab的日志目录在 /var/log/cron 遇到错误可以监听查询问题
比如如下错误
Mar 11 15:06:01 localhost CROND[32221]: (CRON) ERROR chdir failed (/home/www): No such file or directory
可以先去创建home/www家目录
[root@localhost ChainChat]# mkdir /home/www
[root@localhost ChainChat]# chown www:www /home/www
[root@localhost ChainChat]# ll /home/
total 1576
drwxr-xr-x. 2 root root 63 Mar 11 00:09 conf.d
drwxr-xr-x. 5 root root 45 Nov 21 17:31 nginx_conf
-rw-r--r--. 1 root root 18915 Mar 10 23:53 ??ϵnginx.rar
-rw-r--r--. 1 root root 19875 Mar 10 23:55 ??ϵnginx.zip
drwxr-xr-x. 7 root root 115 Mar 11 02:02 old_home
-rw-r--r--. 1 root root 69288 Mar 11 14:41 test
-rw-r--r--. 1 root root 1501484 Mar 11 14:56 test2
drwxr-xr-x. 2 www www 6 Mar 11 15:08 www
下面备注下crontab命令行使用
crontab -e -u www #编辑www用户的crontab
* * * * * /usr/local/php/bin/php /data/wwwroot/项目目录/artisan schedule:run > /dev/null 2>&1
* * * * * #一分钟执行一次一次
/usr/local/php/bin/php php运行目录可以通过which php 查看
/data/wwwroot/项目目录/artisan 项目目录
schedule:run 执行命令
下面写下怎么调用一个任务吧
在api中写下一个方发
<?php
class RateController{
public function testTask(){
.....做你想做的事情
}
}
接下来到app/Console/Kernel.php添加代码
$schedule->call(function(){
// 定时更新xxx
$Rate = new RateController();
$Rate->testTask();
})->everyMinute();
再和上面一样添加定时任务就可以了
文章来自大海技术博客 http://www.ypyunedu.com/article/92 欢迎大家交流