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 相关文章推荐
深入HTTP响应状态码速查表的详解
Jun 07 PHP
PHP header()函数常用方法总结
Apr 11 PHP
php定界符
Jun 19 PHP
destoon网站转移服务器后搜索汉字出现乱码的解决方法
Jun 21 PHP
php中socket通信机制实例详解
Jan 03 PHP
支持png透明图片的php生成缩略图类分享
Feb 08 PHP
Ubuntu server 11.04安装memcache及php使用memcache来存储session的方法
May 31 PHP
php+redis实现注册、删除、编辑、分页、登录、关注等功能示例
Feb 15 PHP
php连接mysql数据库
Mar 21 PHP
搜索附近的人PHP实现代码
Feb 11 PHP
php 后端实现JWT认证方法示例
Sep 04 PHP
微信小程序和php的登录实现
Apr 01 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/01/09 PHP
全面解析PHP面向对象的三大特征
2017/06/10 PHP
PHP convert_uudecode()函数讲解
2019/02/14 PHP
JavaScript 中的事件教程
2007/04/05 Javascript
js有关元素内容操作小结
2011/12/20 Javascript
jQuery-1.9.1源码分析系列(十一)DOM操作续之克隆节点
2015/12/01 Javascript
JavaScript 2048 游戏实例代码(简单易懂)
2016/03/25 Javascript
jQuery+ThinkPHP+Ajax实现即时消息提醒功能实例代码
2017/03/21 jQuery
微信小程序-横向滑动scroll-view隐藏滚动条
2017/04/20 Javascript
简单实现js上传文件功能
2017/08/21 Javascript
javaScript日期工具类DateUtils详解
2017/12/08 Javascript
jsonp跨域及实现百度首页联想功能的方法
2018/08/30 Javascript
angular 表单验证器验证的同时限制输入的实现
2019/04/11 Javascript
layui使用button按钮 点击出现弹层 弹层中加载表单的实例
2019/09/04 Javascript
[18:20]DOTA2 HEROS教学视频教你分分钟做大人-昆卡
2014/06/11 DOTA
python中验证码连通域分割的方法详解
2018/06/04 Python
OpenCV python sklearn随机超参数搜索的实现
2020/01/17 Python
Python3 pickle对象串行化代码实例解析
2020/03/23 Python
Python的logging模块基本用法
2020/12/24 Python
CSS3中31种选择器使用方法教程
2013/12/05 HTML / CSS
CSS3毛玻璃效果(blur)有白边问题的解决方法
2016/11/15 HTML / CSS
HTML5标签使用方法详解
2015/11/27 HTML / CSS
VICHY薇姿俄罗斯官方网上商店:法国护肤品牌,火山温泉水
2019/11/22 全球购物
C#笔试题和英文面试题
2013/02/07 面试题
员工自我鉴定
2013/10/09 职场文书
文秘专业大学生求职信
2013/11/10 职场文书
党员违纪检讨书
2014/02/18 职场文书
《千年梦圆在今朝》教学反思
2014/02/24 职场文书
大学学风建设方案
2014/05/04 职场文书
低碳环保口号
2014/06/12 职场文书
公司总经理助理岗位职责
2014/07/09 职场文书
安全教育主题班会教案
2015/08/12 职场文书
2015年高三毕业班班主任工作总结
2015/10/22 职场文书
详解Redis实现限流的三种方式
2021/04/27 Redis
Vue+TypeScript中处理computed方式
2022/04/02 Vue.js
JS前端使用canvas实现扩展物体类和事件派发
2022/08/05 Javascript