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里得到前天和昨天的日期的代码
Aug 16 PHP
PHP通用分页类page.php[仿google分页]
Aug 31 PHP
调试一段PHP程序时遇到的三个问题
Jan 17 PHP
JS中encodeURIComponent函数用php解码的代码
Mar 01 PHP
PHP去掉从word直接粘贴过来的没有用格式的函数
Oct 29 PHP
深入掌握include_once与require_once的区别
Jun 17 PHP
PHP通过插入mysql数据来实现多机互锁实例
Nov 05 PHP
php生成圆角图片的方法
Apr 07 PHP
PHP使用Pear发送邮件(Windows环境)
Jan 05 PHP
PHP+swoole实现简单多人在线聊天群发
Jan 19 PHP
PHP中SQL查询语句的id=%d解释(推荐)
Dec 10 PHP
PHP中16个高危函数整理
Sep 19 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实现mysql同步的实现方法
2009/10/21 PHP
免费的ip数据库淘宝IP地址库简介和PHP调用实例
2014/04/08 PHP
PHP 面向对象程序设计(oop)学习笔记 (五) - PHP 命名空间
2014/06/12 PHP
PHP中常用的三种设计模式详解【单例模式、工厂模式、观察者模式】
2019/06/14 PHP
JS类中定义原型方法的两种实现的区别
2007/03/08 Javascript
读jQuery之五(取DOM元素)
2011/06/20 Javascript
JS实现模仿微博发布效果实例代码
2013/12/16 Javascript
检查输入的是否是数字使用keyCode配合onkeypress事件
2014/01/23 Javascript
Jquery原生态实现表格header头随滚动条滚动而滚动
2014/03/18 Javascript
jQuery构造函数init参数分析续
2015/05/13 Javascript
JavaScript——DOM操作——Window.document对象详解
2016/07/14 Javascript
JS button按钮实现submit按钮提交效果
2016/11/01 Javascript
javascript prototype原型详解(比较基础)
2016/12/26 Javascript
Bootstrap导航条学习使用(二)
2017/02/08 Javascript
Windows下使用Nodejs运行js的方法
2017/09/02 NodeJs
基于Vue实现拖拽功能
2020/07/29 Javascript
Javascript Web Worker使用过程解析
2020/03/16 Javascript
微信小程序用户登录和登录态维护的实现
2020/12/10 Javascript
[02:29]DOTA2英雄基础教程 陈
2013/12/17 DOTA
[01:14:34]DOTA2上海特级锦标赛C组资格赛#2 LGD VS Newbee第一局
2016/02/28 DOTA
[01:23]2019完美世界全国高校联赛(春季赛)合肥全国总决赛
2019/06/10 DOTA
Python生成随机数的方法
2014/01/14 Python
Python中使用动态变量名的方法
2014/05/06 Python
Django Admin实现上传图片校验功能
2016/03/06 Python
Python用模块pytz来转换时区
2016/08/19 Python
Python object类中的特殊方法代码讲解
2020/03/06 Python
pycharm解决关闭flask后依旧可以访问服务的问题
2020/04/03 Python
在python中利用pycharm自定义代码块教程(三步搞定)
2020/04/15 Python
Python 添加文件注释和函数注释操作
2020/08/09 Python
HTML5和以前HTML4的区别整理
2013/10/20 HTML / CSS
MAC Cosmetics巴西官方网站:M·A·C彩妆
2019/04/18 全球购物
优秀学生干部推荐材料
2014/02/03 职场文书
电影建党伟业观后感
2015/06/01 职场文书
校园运动会广播稿
2015/08/19 职场文书
python 定义函数 返回值只取其中一个的实现
2021/05/21 Python
SqlServer常用函数及时间处理小结
2023/05/08 SQL Server