生产环境cli问题
大佬们好,遇到个问题就是使用了CI的多环境 config内添加了production目录 存放线上配置。
现在我使用CI的CLI跑定时,DB redis然后报读不到production的线上配置,别的程序DB REDIS都正常,能肯定是走ENVIRONMENT 代码文件都www:www 774权限
把production的配置复制到config下就没问题。。。不过还是想解决下这个问题。。 是最新的 3.1.9 版本吗? Hex 发表于 2018-12-26 14:19
是最新的 3.1.9 版本吗?
嗯 3.1.9 贴代码看一下~ 本帖最后由 sszwei 于 2018-12-28 16:09 编辑
Hex 发表于 2018-12-27 13:33
贴代码看一下~
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` = 0LIMIT 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:colonelIncome;Params:'.implode('-', $newIDs));
echo 'Colonel_Income Table Status 1 OK';exit;
else:
echo 'x';exit;
endif;
}
}
执行OK,就是config读取不了production的配置,别的功能就OK。。能做到覆盖读取
http://img.shequpifa.com/www/product/1545984459805.png
改成浏览器访问就能读取到配置么? Hex 发表于 2018-12-28 19:09
改成浏览器访问就能读取到配置么?
对的,都正常,线上使用config/production是方便部署。按CI文档的多环境来说CLI这种使用情况不应该没考虑到吧? sszwei 发表于 2018-12-29 09:24
对的,都正常,线上使用config/production是方便部署。按CI文档的多环境来说CLI这种使用情况不应该没考虑 ...
不排除是这种情况,具体需要看一下源码来确定,你可以先按不支持来做。 env 是通过 $_SERVER识别的,CLI下没法识别,需要你手动配置ENV。
我建议是建一个 env.php 的文件,直接配置参数值,线上和线下手动改。
页:
[1]