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 相关文章推荐
第三节--定义一个类
Nov 16 PHP
介绍php设计模式中的工厂模式
Jun 12 PHP
php+mysql写的简单留言本实例代码
Jul 25 PHP
php 什么是PEAR?(第二篇)
Mar 19 PHP
discuz7 phpMysql操作类
Jun 21 PHP
php实现aes加密类分享
Feb 16 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(六)
Jun 23 PHP
PHP 魔术变量和魔术函数详解
Feb 25 PHP
Yii2 输出xml格式数据的方法
May 03 PHP
PHP实现链式操作的原理详解
Sep 16 PHP
PHP获取当前执行php文件名的代码
Mar 02 PHP
php与阿里云短信接口接入操作案例分析
May 27 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程序中的常见漏洞进行攻击(下)
2006/10/09 PHP
PHP 使用MySQL管理Session的回调函数详解
2013/06/21 PHP
php中unserialize返回false的解决方法
2014/09/22 PHP
PHPExcel读取EXCEL中的图片并保存到本地的方法
2015/02/14 PHP
php查看网页源代码的方法
2015/03/13 PHP
VBScript版代码高亮
2006/06/26 Javascript
JMenuTab简单使用说明
2008/03/13 Javascript
jQuery 开发者应该注意的9个错误
2012/05/03 Javascript
javascript仿php的print_r函数输出json数据
2013/09/13 Javascript
Angular.js与Bootstrap相结合实现表格分页代码
2016/04/12 Javascript
快速入门Vue
2016/12/19 Javascript
Node.js websocket使用socket.io库实现实时聊天室
2017/02/20 Javascript
基于JQuery的Ajax方法使用详解
2017/08/16 jQuery
VueJs 搭建Axios接口请求工具
2017/11/20 Javascript
详解VueJS应用中管理用户权限
2018/02/02 Javascript
angularjs实现table表格td单元格单击变输入框/可编辑状态示例
2019/02/21 Javascript
解决vue语法会有延迟加载显现{{xxx}}的问题
2019/11/14 Javascript
js回调函数原理与用法案例分析
2020/03/04 Javascript
[02:35]DOTA2英雄基础教程 末日使者
2013/12/04 DOTA
[01:09:40]Newbee vs Pain 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python 数据加密代码
2008/12/24 Python
Python爬虫实例_城市公交网络站点数据的爬取方法
2018/01/10 Python
python控制windows剪贴板,向剪贴板中写入图片的实例
2018/05/31 Python
Django框架模板文件使用及模板文件加载顺序分析
2019/05/23 Python
python变量命名的7条建议
2019/07/04 Python
使用python动态生成波形曲线的实现
2019/12/04 Python
关于Pytorch MaxUnpool2d中size操作方式
2020/01/03 Python
Python实现AI换脸功能
2020/04/10 Python
python调用API接口实现登陆短信验证
2020/05/10 Python
阿联酋手表和配饰购物网站:Rivolishop
2019/11/25 全球购物
反腐倡廉警示教育活动心得体会
2014/09/04 职场文书
心得体会的写法
2014/09/05 职场文书
招标保密承诺书
2015/01/20 职场文书
环保主题班会教案
2015/08/13 职场文书
合作意向书范本
2019/04/17 职场文书
pytorch中的model=model.to(device)使用说明
2021/05/24 Python