在我的CodeIgniter站点上,我使用类似的东西来区分live和dev环境 .
if (defined('STDIN') || $_SERVER['SERVER_NAME']=='livesite.com') {
define('ENVIRONMENT', 'production');
} else {
define('ENVIRONMENT', 'development');
}
然后,基于环境我的代码设置适当的数据库配置 .
我还有几个通过PHP运行的CRON作业,有效地在站点内运行某些代码 .
当我运行使用此代码的CRON作业时,它们似乎只是默认为 生产环境 环境 . 所以我在dev上运行的所有CRON仍然连接到 生产环境 数据库 . 如何修改上面的代码以便与CRON一起玩?我只需要一种方法来检测CRON是否正在 生产环境 或dev上运行,以便它将连接到相应的DB .
3 回答
在cronjobs中没有定义
$_SERVER
,这就是您的检查失败的原因 .根据您的配置,有多种方法可以识别环境:
然后在代码检查中:
如果您的环境位于不同的主机上,则可以使用:
您可以设置一个cron变量,例如
然后检查你的脚本:
这对我有用:
打开终端并运行
php -i
以查看您可以使用的服务器上可用的变量 . 我喜欢默认使用我的开发环境,因为不同的开发人员可以设置不同的虚拟主机或路径到他们的工作目录 .以命令方式设置Var:
创建Bootstrap方式
您可以为CLI创建一个引导 生产环境 环境的引导程序:
在Codeigniter webroot:
./cli-prod.php
之后,运行命令喜欢: