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
<?php
class RateController{
 
public function testTask(){
   .....做你想做的事情
}
 
}

接下来到app/Console/Kernel.php添加代码

$schedule->call(function(){
            // 定时更新xxx
            $Rate = new RateController();
            $Rate->testTask();
        })->everyMinute();

再和上面一样添加定时任务就可以了

文章来自大海技术博客 www.ypyunedu.com 欢迎大家交流

大海技术博客
请先登录后发表评论
  • latest comments
  • 总共0条评论