Laravel 不同生产环境服务器的判断实践


Posted in PHP onOctober 15, 2019

项目的前期为了开发速度会使用单一应用,就是一个 Laravel 框架实现 API 和后台接口。

用户体量上来后,一台服务器不够了,项目就采用了 API 和 后台接口分开放到不同的服务器上面。

发现路由数量变多后影响到了性能,这个时候需要区别不同服务器去加载不同的路由。

如何去别不同的服务器区别环境,但是又要区别是生产环境。

代码实现

可以使用 app()->environment(); 方法实现,生产环境和测试环境的区别。

查看代码后发现可以使用更多的方法。

/**
 * 获取或检查当前应用程序环境。
 *
 * @return string|bool
 */
public function environment()
{
  // 返回传递给函数的参数数量
  if (func_num_args() > 0) {
    // 如果第一个参数是数组就去第一个,不是的话取全部的。
    $patterns = is_array(func_get_arg(0)) ? func_get_arg(0) : func_get_args();

    return Str::is($patterns, $this['env']);
  }

  return $this['env'];
}

Str::is 函数判断给定的字符串是否匹配给定的模式。星号 * 可以用来表示通配符:

# 判断在 API 环境
app()->environment("production.api");
# 判断在 ADMIN 环境
app()->environment("production.admin");
# 判断在所有环境
app()->environment("production.*");

修改 RouteServiceProvider 文件

/**
 * Define the routes for the application.
 */
public function map()
{
  // 公共路由

  if (app()->environment('production.api')) {
    # production api 路由
    $this->mapApiRoutes();
  } elseif (app()->environment('production.admin')) {
    # production admin 路由
    $this->mapAdminRoutes();
  } else {
    # local testing stanging 环境下加载所有路由
    $this->mapApiRoutes();

    $this->mapAdminRoutes();
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
DedeCms模板安装/制作概述
Mar 11 PHP
php数据入库前清理 注意php intval与mysql的int取值范围不同
Dec 12 PHP
PHP 将逗号、空格、回车分隔的字符串转换为数组的函数
Jun 07 PHP
安装ImageMagick出现error while loading shared libraries的解决方法
Sep 23 PHP
PHP数组去重比较快的实现方式
Jan 19 PHP
Zend Framework教程之模型Model基本规则和使用方法
Mar 04 PHP
全面解读PHP的Yii框架中的日志功能
Mar 17 PHP
ThinkPHP框架里隐藏index.php
Apr 12 PHP
浅析Yii2 gridview实现批量删除教程
Apr 22 PHP
PhpStorm 如何优雅的调试Hyperf的方法步骤
Nov 24 PHP
gearman管理工具GearmanManager的安装与php使用方法示例
Feb 27 PHP
TP5框架实现签到功能的方法分析
Apr 05 PHP
laravel自定义分页的实现案例offset()和limit()
Oct 15 #PHP
Laravel6.0.4中将添加计划任务事件的方法步骤
Oct 15 #PHP
Laravel5.5 手动分页和自定义分页样式的简单实现
Oct 15 #PHP
Laravel实现搜索的时候分页并携带参数
Oct 15 #PHP
在Laravel中实现使用AJAX动态刷新部分页面
Oct 15 #PHP
Yii框架的redis命令使用方法简单示例
Oct 15 #PHP
解决在laravel中leftjoin带条件查询没有返回右表为NULL的问题
Oct 15 #PHP
You might like
一些常用的Javascript函数
2006/12/22 Javascript
jQuery 动画基础教程
2008/12/25 Javascript
JS面向对象编程之对象使用分析
2010/08/19 Javascript
javascript自启动函数的问题探讨
2013/10/05 Javascript
原生javascript实现无间缝滚动示例
2014/01/28 Javascript
javascript的解析执行顺序在各个浏览器中的不同
2014/03/17 Javascript
每天一篇javascript学习小结(面向对象编程)
2015/11/20 Javascript
深入理解jQuery 事件处理
2016/06/14 Javascript
Javascript随机标签云代码实例
2016/06/21 Javascript
JavaScript中闭包的写法和作用详解
2016/06/29 Javascript
基于jquery实现的鼠标悬停提示案例
2016/12/11 Javascript
node+express框架中连接使用mysql(经验总结)
2018/11/10 Javascript
详解vuex之store拆分即多模块状态管理(modules)篇
2018/11/13 Javascript
js中数组常用方法总结(推荐)
2019/04/09 Javascript
JavaScript中关于base64的一些事
2019/05/06 Javascript
vue 根据选择条件显示指定参数的例子
2019/11/09 Javascript
Element Notification通知的实现示例
2020/07/27 Javascript
解决vue项目 build之后资源文件找不到的问题
2020/09/12 Javascript
[00:37]2016完美“圣”典风云人物:AMS宣传片
2016/12/06 DOTA
Python生成随机数的方法
2014/01/14 Python
python自动化测试之连接几组测试包实例
2014/09/28 Python
Python卸载模块的方法汇总
2016/06/07 Python
python实现上传下载文件功能
2020/11/19 Python
R语言 vs Python对比:数据分析哪家强?
2017/11/17 Python
Python3.5面向对象与继承图文实例详解
2019/04/24 Python
python使用turtle绘制国际象棋棋盘
2019/05/23 Python
Python函数的返回值、匿名函数lambda、filter函数、map函数、reduce函数用法实例分析
2019/12/26 Python
Python多重继承之菱形继承的实例详解
2020/02/12 Python
python中pyqtgraph知识点总结
2021/01/26 Python
HTML5 移动页面自适应手机屏幕四类方法总结
2017/08/17 HTML / CSS
遇到的Mysql的面试题
2014/06/29 面试题
秘书岗位职责
2013/11/18 职场文书
财务内勤岗位职责
2014/04/17 职场文书
先进事迹材料怎么写
2014/12/30 职场文书
Python几种酷炫的进度条的方式
2022/04/11 Python
解决spring.thymeleaf.cache=false不起作用的问题
2022/06/10 Java/Android