laravel 中的定时任务不执行(出现用户权限不够导致失败问题解决 )

>注意:以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  欢迎大家交流

发布了263 篇原创文章 · 获赞 46 · 访问量 37万+

猜你喜欢

转载自blog.csdn.net/qq_27229113/article/details/104797346