yii2 定时任务 crontab

3 篇文章 0 订阅
1 篇文章 0 订阅

1. 在yii2 项目中 ,定时任务是放在

2. 在项目里边遇到的坑

刚开始在做项目的时候,将项目的 命令空间  由  app 改为  supermarket

定时任务的代码写完了,

1.  先在 本地  用  windows  的  cmd 去测试  :输入如下命令 :

进入到项目的根目录 (xiaoniao-new) ,使用如下命令 :

解释 : php  yii  控制器/方法名 

注意 :如上的命令是在  php ,被加入环境变量的情况下,可以直接使用 php 

查看 php 是否加入环境变量的命令 : php -v


2. 执行了 php  yii  控制器/方法名  命令之后,直接报错

报错原因是因为,同事之前将项目跟目录下面的一些文件删除了,我去 恰恰用到的两个文件全被删了

 解决 : 重新下载的框架代码,加上了这两个文件在去执行上面的命令

3. 报错   db 这个组件应该有个 class 的值

原因 : yii2 控制台运行的时候,加载的是 配置文件  config 里面的  console.php 这配置文件

打开 console.php 文件,果然没有 db  这个项 的配置 ,(疑问: 那为什么在项目里面访问的时候,就没有报错了,哈哈哈,因为在项目里边访问的时候,用的不是这配置文件啊,这个配置文件只有在  定时任务的时候才会用啊)

乖乖的加上  db 的配置,在去执行 刚才的命令  :   php  yii  控制器/方法名 

4. 又出现问题了 : 无法请求 channel-statistics/output  

这个还是要仔细看报错信息才能发现喔

5. 根据之前的经验,分析可能出现的原因,左思右想,明明存在,为什么访问不了

想想之前的经历  :  可能是 由于  命名空间的问题???由于命名空间不一致,导致无法访问

6. 打开  配置文件   console.php

commands 下,文件对应的 命名空间是一致的呀,为什么会不能执行了

万般无奈之下,打开了 yii2 框架源码 的 配置文件 console.php 看看

源码里边用的是  : app

试着将项目里边的    console.php  和  commands 下文件 对应的命名空间  都修改为   app ,在去执行刚才的命令

我去,惊喜无处不在,竟然可以执行了

7. 在说说遇到的另一个问题,commands 下的文件引用的 controller  应该是   

use yii\console\Controller;   而不是  use yii\web\Controller; 这个坑我爬过来了

8. 本地测试完了,该在 linux 服务器上测试了,上传代码,crontab   创建

1.   crontab -e  打开 在里面配置 , 定时任务的代码。如下

配置如下代码:前面时间控制另行查询,这里不做解释

2. 重新启动  crontable 命令。

sudo service crond restart

ok.静静的等待结果

3. 如果没有结果,排除错误的方法

在终端 直接执行,刚才的配置,等待结果

结果ok , 那就说明

基本能确定  就是   定时任务的时间配置有问题 (自行查询时间配置格式 解决)!!!!

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值