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 相关文章推荐
php.ini 中文版
Oct 28 PHP
php利用cookie实现访问次数统计代码
May 19 PHP
JoshChen_php新手进阶高手不可或缺的规范介绍
Aug 16 PHP
php权重计算方法代码分享
Jan 09 PHP
php判断手机访问还是电脑访问示例分享
Jan 20 PHP
php递归删除目录下的文件但保留的实例分享
May 10 PHP
Yii中render和renderPartial的区别
Sep 03 PHP
php中in_array函数用法探究
Nov 25 PHP
php表单加入Token防止重复提交的方法分析
Oct 10 PHP
PHP自动补全表单的两种方法
Mar 06 PHP
完美的php分页类
Oct 24 PHP
PHP基于关联数组20行代码搞定约瑟夫问题示例
Nov 07 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
根德YB400的电路分析
2021/03/02 无线电
PHP中PDO基础教程 入门级
2011/09/04 PHP
完美解决:Apache启动问题―(OS 10022)提供了一个无效的参数
2013/06/08 PHP
本地机apache配置基于域名的虚拟主机详解
2013/08/10 PHP
PHP中的日期加减方法示例
2014/08/21 PHP
php中json_encode UTF-8中文乱码的更好解决方法
2014/09/28 PHP
php实现CSV文件导入和导出
2015/10/24 PHP
php 使用curl模拟登录人人(校内)网的简单实例
2016/06/06 PHP
PHP+Ajax无刷新带进度条图片上传示例
2017/02/08 PHP
php mysql PDO 查询操作的实例详解
2017/09/23 PHP
laravel框架中路由设置,路由参数和路由命名实例分析
2019/11/23 PHP
tp5.1框架数据库子查询操作实例分析
2020/05/26 PHP
JS在TextArea光标位置插入文字并实现移动光标到文字末尾
2013/06/21 Javascript
Javascript仿新浪游戏频道鼠标悬停显示子菜单效果
2015/08/21 Javascript
Angularjs在初始化未完毕时出现闪烁问题的解决方法分析
2016/08/05 Javascript
轻松掌握JavaScript单例模式
2016/08/25 Javascript
Vue.js bootstrap前端实现分页和排序
2017/03/10 Javascript
vue-cli入门之项目结构分析
2017/04/20 Javascript
利用Jasmine对Angular进行单元测试的方法详解
2017/06/12 Javascript
微信小程序实现tab和swiper切换结合效果
2020/07/17 Javascript
javascript显示动态时间的方法汇总
2018/07/06 Javascript
JavaScript Dom 绑定事件操作实例详解
2019/10/02 Javascript
使用React-Router实现前端路由鉴权的示例代码
2020/07/26 Javascript
[01:03:51]2018DOTA2亚洲邀请赛 4.7 淘汰赛 VP vs LGD 第三场
2018/04/09 DOTA
[01:04:02]DOTA2-DPC中国联赛 正赛 Elephant vs IG BO3 第二场 1月24日
2021/03/11 DOTA
python开发之基于thread线程搜索本地文件的方法
2015/11/11 Python
python实现word文档批量转成自定义格式的excel文档的思路及实例代码
2020/02/21 Python
x-ua-compatible content=”IE=7, IE=9″意思理解
2013/07/22 HTML / CSS
英国内衣连锁店:Boux Avenue
2018/01/24 全球购物
加拿大最大的体育用品、鞋类和服装零售商:Sport Chek
2018/11/29 全球购物
大学生活动总结怎么写
2014/04/29 职场文书
2014四风问题对照检查材料范文
2014/09/15 职场文书
被告代理词范文
2015/05/25 职场文书
nginx对http请求处理的各个阶段详析
2021/03/31 Servers
MySQL 那些常见的错误设计规范,你都知道吗
2021/07/16 MySQL
特别篇动画《总之就是非常可爱 ~制服~》PV公开,2022年夏季播出
2022/04/04 日漫