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开发文件系统实例讲解
Oct 09 PHP
社区(php&&mysql)三
Oct 09 PHP
用Flash图形化数据(一)
Oct 09 PHP
Win2003下APACHE+PHP5+MYSQL4+PHPMYADMIN 的简易安装配置
Nov 18 PHP
php防注
Jan 15 PHP
PHP 实例化类的一点摘记
Mar 23 PHP
IIS7.X配置PHP运行环境小结
Jun 09 PHP
smarty巧妙处理iframe中内容页的代码
Mar 07 PHP
使用session判断用户登录用户权限(超简单)
Jun 08 PHP
PHP数据对象PDO操作技巧小结
Sep 27 PHP
浅谈php调用python文件
Mar 29 PHP
thinkphp框架类库扩展操作示例
Nov 26 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
自己做矿石收音机
2021/03/02 无线电
ASP知识讲座四
2006/10/09 PHP
dedecms中常见问题修改方法总结
2007/03/21 PHP
配置Apache2.2+PHP5+CakePHP1.2+MySQL5运行环境
2009/04/25 PHP
PHP采集类snoopy详细介绍(snoopy使用教程)
2014/06/19 PHP
destoon整合UCenter图文教程
2014/06/21 PHP
win7 64位系统 配置php最新版开发环境(php+Apache+mysql)
2014/08/15 PHP
php中将一个对象保存到Session中的方法
2015/03/13 PHP
JQuery Tips(3) 关于$()包装集内元素的改变
2009/12/14 Javascript
Extjs TriggerField在弹出窗口显示不出问题的解决方法
2010/01/08 Javascript
javascript采用数组实现tab菜单切换效果
2012/12/12 Javascript
jquery中event对象属性与方法小结
2013/12/18 Javascript
JavaScript实现两个Table固定表头根据页面大小自行调整
2014/01/03 Javascript
jQuery中操控hidden、disable等无值属性的方法
2014/01/06 Javascript
table对象中的insertRow与deleteRow使用示例
2014/01/26 Javascript
js中哈希表的几种用法总结
2014/01/28 Javascript
Js表格万条数据瞬间加载实现代码
2014/02/20 Javascript
Vue2.0用户权限控制解决方案的示例
2018/02/10 Javascript
Nodejs核心模块之net和http的使用详解
2019/04/02 NodeJs
简单了解Ajax表单序列化的实现方法
2019/06/14 Javascript
layer弹窗在键盘按回车将反复刷新的实现方法
2019/09/25 Javascript
JavaScript DOM常用操作代码汇总
2020/07/03 Javascript
Python提取网页中超链接的方法
2016/09/18 Python
浅谈DataFrame和SparkSql取值误区
2018/06/09 Python
pycharm运行和调试不显示结果的解决方法
2018/11/30 Python
Python判断telnet通不通的实例
2019/01/26 Python
python修改文件内容的3种方法详解
2019/11/15 Python
pyftplib中文乱码问题解决方案
2020/01/11 Python
基于python和flask实现http接口过程解析
2020/06/15 Python
matplotlib.pyplot.matshow 矩阵可视化实例
2020/06/16 Python
乌克兰电子产品和家用电器购物网站:TOUCH
2019/08/09 全球购物
用Java语言将一个键盘输入的数字转化成中文输出
2013/01/25 面试题
园长自我鉴定
2013/10/06 职场文书
秋季运动会活动方案
2014/02/05 职场文书
中文教师求职信
2014/02/22 职场文书
从事会计工作年限证明
2015/06/23 职场文书