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 5昨天隆重推出--PHP 5/Zend Engine 2.0新特性
Oct 09 PHP
PHP 强制性文件下载功能的函数代码(任意文件格式)
May 26 PHP
PHP版国家代码、缩写查询函数代码
Aug 14 PHP
PHP mail()函数使用及配置方法
Jan 14 PHP
php无限遍历文件夹示例分享
Mar 04 PHP
PHP使用Alexa API获取网站的Alexa排名例子
Jun 12 PHP
php校验表单检测字段是否为空的方法
Mar 20 PHP
PHP浮点数精度问题汇总
May 13 PHP
php基于Fleaphp框架实现cvs数据导入MySQL的方法
Feb 23 PHP
PHP环境搭建(php+Apache+mysql)
Nov 14 PHP
php+webSoket实现聊天室示例代码(附源码)
Feb 17 PHP
Laravel框架模板加载,分配变量及简单路由功能示例
Jun 11 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
一个简单的自动发送邮件系统(一)
2006/10/09 PHP
php将数据库中的电话号码读取出来并生成图片
2008/08/31 PHP
PHP获取网址的顶级域名函数代码
2012/09/24 PHP
Apache中php.ini的设置方法
2013/02/28 PHP
解析smarty 截取字符串函数 truncate的用法介绍
2013/06/20 PHP
如何把php5.3版本升级到php5.4或者php5.5
2015/07/31 PHP
PHP生成和获取XML格式数据的方法
2016/03/04 PHP
Laravel框架用户登陆身份验证实现方法详解
2017/09/14 PHP
jQuery ajax BUG:object doesn't support this property or method
2010/07/06 Javascript
jquery 字符串切割函数substring的用法说明
2014/02/11 Javascript
javascript闭包传参和事件的循环绑定示例探讨
2014/04/17 Javascript
BootstrapTable与KnockoutJS相结合实现增删改查功能【一】
2016/05/10 Javascript
WebView启动支付宝客户端支付失败的问题小结
2017/01/11 Javascript
解决vue中监听input只能输入数字及英文或者其他情况的问题
2018/08/30 Javascript
如何使用 vue + d3 画一棵树
2018/12/03 Javascript
es6 filter() 数组过滤方法总结
2019/04/03 Javascript
使用jQuery mobile NuGet让你的网站在移动设备上同样精彩
2019/06/18 jQuery
JavaScript实现缓动动画
2020/11/25 Javascript
零基础写python爬虫之使用Scrapy框架编写爬虫
2014/11/07 Python
CentOS 7下Python 2.7升级至Python3.6.1的实战教程
2017/07/06 Python
JPype实现在python中调用JAVA的实例
2017/07/19 Python
对Python中DataFrame按照行遍历的方法
2018/04/08 Python
python3.4实现邮件发送功能
2018/05/28 Python
Python figure参数及subplot子图绘制代码
2020/04/18 Python
基于python爬取链家二手房信息代码示例
2020/10/21 Python
如何利用python 读取配置文件
2021/01/06 Python
印度尼西亚综合购物网站:Lazada印尼
2016/09/07 全球购物
运动会通讯稿400字
2014/01/28 职场文书
大型会议接待方案
2014/03/01 职场文书
《苏珊的帽子》教学反思
2014/04/07 职场文书
2014年安全生产责任书
2014/07/22 职场文书
荒岛余生观后感
2015/06/09 职场文书
水浒传读书笔记
2015/06/25 职场文书
2016年员工年度考核评语
2015/12/02 职场文书
基于Redis结合SpringBoot的秒杀案例详解
2021/10/05 Redis
Go Grpc Gateway兼容HTTP协议文档自动生成网关
2022/06/16 Golang