多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
### 开发版本管理 **测试服务器:** 为了有效的管理在开发中的代码管理,将代码进行开发中调试的代码和预发布进行全局测试的代码进行分开管理,有效的规则代码。 **线上服务器:** 线上在稳定运行中的代码,在有新的需求后,进行迭代开发,不影响到线上本身的业务稳定运行,在小范围内进行灰度发布上线,哪怕有错误,也把错误问题带来的影响降低到最小。 **位置:** \Application\Common\Controller\gBaseController.class.php **调用:** ``` use Common\Controller\BaseController; // 加载基类 $publish = $this->getPublishVersion(); // 调用控制方法 // 新开发的业务,在开发中把代码放在里面 if ($publish == 'develop') { echo 'develop'; // 开发中代码 } // 开发完成后,预发布到测试服务器进行集中测试 if ($publish == 'release') { echo 'release'; // 开发完成后集中测试代码 } // 灰度发布到线上进行 if ($publish == 'gray_release') { echo 'gray release'; // 发布线上小部分开放,灰度发布上线 } ``` **访问控制:** 在代码开发完成后,需要访问代码,在 / 系统管理 / 版本发布 中进行配置,指定的人员进行有限权限的访问指定代码,从而不影响整体稳定运行。 1、开发中和预发布,可适用在测试服务器,灰度发布在测试服务器无法访问。 2、灰度发布只适用于线上服务器访问,开发中和预发布在线上服务器也是无法访问的。 **完整代码:** ``` /** * 发布版本控制 * jig 2020-12-16 * * @return string */ public function getPublishVersion () { $version_where = array( 'is_delete' => '0', 'test_phone' => session('userInfo.mobile'), 'test_url' => MODULE_NAME.'/'.CONTROLLER_NAME.'/'.ACTION_NAME, ); $code_version = M('code_version')->where($version_where)->find(); if (C('SYSTEM_VERSION') == 1) { // 测试服务器 if ($code_version['version_type'] == 1) { return 'develop'; // 开发中 } else if ($code_version['version_type'] == 2) { return 'release'; // 预发布 } } else if (C('SYSTEM_VERSION') == 2) { // 线上服务器 if ($code_version['version_type'] == 3) { return 'gray_release'; // 灰度发布 } } } ```