用户
 找回密码
 入住 CI 中国社区
搜索
查看: 685|回复: 8
收起左侧

[讨论/交流] 生产环境cli问题

[复制链接]
发表于 2018-12-25 18:17:41 | 显示全部楼层 |阅读模式
大佬们好,遇到个问题
就是使用了CI的多环境 config内添加了production目录 存放线上配置。
现在我使用CI的CLI跑定时,DB redis然后报读不到production的线上配置,别的程序DB REDIS都正常,能肯定是走ENVIRONMENT 代码文件都www:www 774权限

把production的配置复制到config下就没问题。。。不过还是想解决下这个问题。。
发表于 2018-12-26 14:19:12 | 显示全部楼层
是最新的 3.1.9 版本吗?
 楼主| 发表于 2018-12-26 16:42:19 | 显示全部楼层
Hex 发表于 2018-12-26 14:19
是最新的 3.1.9 版本吗?

嗯 3.1.9
发表于 2018-12-27 13:33:28 | 显示全部楼层
贴代码看一下~
 楼主| 发表于 2018-12-28 16:08:29 | 显示全部楼层
本帖最后由 sszwei 于 2018-12-28 16:09 编辑
Hex 发表于 2018-12-27 13:33
贴代码看一下~
PHP复制代码
class Cron extends CI_Controller
{
public function colonelIncome($code)
{
    if(is_cli()):
        $time = time();
        $newIDs = $newResult = [];
        $sql = "SELECT `id`, `uid`, `number`, `value` FROM `a` WHERE (`time` + 7 * 86400) < ". time()." AND `status` = 0  LIMIT 1000 ";  /*超过7天*/
        $query = $this->db->query($sql);
        $result = $query->result();
 
        if( $result != NULL ):
            foreach ($result as $val):                $newIDs[] = $val;                $newResult[] = $val;
            endforeach;
        endif;
 
        if( ! empty($newIDs) AND  ! empty($newResult) ):
            $data = [
                'status' => 1,
            ];
            $this->db->where_in('id', $newIDs);
            $this->db->update('a', $data);
 
            $this->db->insert_batch('b', $newResult);
        endif;
 
        log_message('debug', 'Model:colonelIncomearams:'.implode('-', $newIDs));
        echo 'Colonel_Income Table Status 1 OK';exit;
    else:
        echo 'x';exit;
    endif;
}
}
 
复制代码




执行OK,就是config读取不了production的配置,别的功能就OK。。能做到覆盖读取


发表于 2018-12-28 19:09:16 | 显示全部楼层
改成浏览器访问就能读取到配置么?
 楼主| 发表于 2018-12-29 09:24:32 | 显示全部楼层
Hex 发表于 2018-12-28 19:09
改成浏览器访问就能读取到配置么?

对的,都正常,线上使用config/production是方便部署。按CI文档的多环境来说CLI这种使用情况不应该没考虑到吧?
发表于 2018-12-29 18:29:04 | 显示全部楼层
sszwei 发表于 2018-12-29 09:24
对的,都正常,线上使用config/production是方便部署。按CI文档的多环境来说CLI这种使用情况不应该没考虑 ...

不排除是这种情况,具体需要看一下源码来确定,你可以先按不支持来做。
发表于 2019-1-2 13:46:34 | 显示全部楼层
env 是通过 $_SERVER识别的,CLI下没法识别,需要你手动配置ENV。
我建议是建一个 env.php 的文件,直接配置参数值,线上和线下手动改。

本版积分规则