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 相关文章推荐
不用数据库的多用户文件自由上传投票系统(3)
Oct 09 PHP
通过PHP CLI实现简单的数据库实时监控调度
Jul 01 PHP
几种有用的变型 PHP中循环语句的用法介绍
Jan 30 PHP
国产PHP开发框架myqee新手快速入门教程
Jul 14 PHP
取得单条网站评论以数组形式进行输出
Jul 28 PHP
smarty学习笔记之常见代码段用法总结
Mar 19 PHP
yii2中的rules 自定义验证规则详解
Apr 19 PHP
[原创]php正则删除img标签的方法示例
May 27 PHP
Laravel学习教程之model validation的使用示例
Oct 23 PHP
PHP 获取客户端 IP 地址的方法实例代码
Nov 11 PHP
PHP树形结构tree类用法示例
Feb 01 PHP
Yii使用EasyWechat实现小程序获取用户的openID的方法
Apr 29 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
PHP的时间戳与具体时间转化的简单实现
2016/06/13 PHP
PHP实现求解最长公共子串问题的方法
2017/11/17 PHP
Yii2框架数据验证操作实例详解
2018/05/02 PHP
javascript 选择文件夹对话框(web)
2009/07/07 Javascript
基于jquery的滚动新闻列表
2010/06/19 Javascript
javascript 延迟加载技术(lazyload)简单实现
2011/01/17 Javascript
如何创建一个JavaScript弹出DIV窗口层的效果
2013/09/25 Javascript
通过javascript把图片转化为字符画
2013/10/24 Javascript
textarea 控制输入字符字节数(示例代码)
2013/12/27 Javascript
使用jquery写个更改表格行顺序的小功能
2014/04/29 Javascript
JavaScript利用append添加元素报错的解决方法
2014/07/01 Javascript
JavaScript中原型和原型链详解
2015/02/11 Javascript
js实现用户离开页面前提示是否离开此页面的方法(包括浏览器按钮事件)
2015/07/18 Javascript
简单对比分析JavaScript中的apply,call与this的使用
2015/12/04 Javascript
jquery form表单获取内容以及绑定数据
2016/02/24 Javascript
JS动态创建元素的两种方法
2016/04/20 Javascript
AngularJS入门教程之REST和定制服务详解
2016/08/19 Javascript
layui实现数据分页功能(ajax异步)
2019/07/27 Javascript
[58:59]完美世界DOTA2联赛PWL S3 access vs CPG 第一场 12.13
2020/12/16 DOTA
解决Shell执行python文件,传参空格引起的问题
2018/10/30 Python
python3利用ctypes传入一个字符串类型的列表方法
2019/02/12 Python
Python定时任务APScheduler的实例实例详解
2019/07/22 Python
使用tensorflow实现VGG网络,训练mnist数据集方式
2020/05/26 Python
Python获取excel内容及相关操作代码实例
2020/08/10 Python
Python中Qslider控件实操详解
2021/02/20 Python
欧洲第一的摇滚和金属乐队服装网站:EMP
2017/10/26 全球购物
斯德哥尔摩通票:Stockholm Pass
2018/01/09 全球购物
公司领导推荐信
2013/11/12 职场文书
网络技术专业求职信
2014/05/02 职场文书
三八妇女节活动总结
2014/05/04 职场文书
股东出资证明书范例
2014/10/04 职场文书
招商引资工作汇报材料
2014/10/28 职场文书
公司安全管理制度范本
2015/08/05 职场文书
高中优秀作文(范文)
2019/08/15 职场文书
您对思维方式了解多少?
2019/12/09 职场文书
Java实现贪吃蛇游戏的示例代码
2022/09/23 Java/Android