Laravel 不同生产环境服务器的判断实践

吾爱主题 阅读:123 2021-09-03 16:10:00 评论:0

项目的前期为了开发速度会使用单一应用,就是一个 Laravel 框架实现 API 和后台接口。

用户体量上来后,一台服务器不够了,项目就采用了 API 和 后台接口分开放到不同的服务器上面。

发现路由数量变多后影响到了性能,这个时候需要区别不同服务器去加载不同的路由。

如何去别不同的服务器区别环境,但是又要区别是生产环境。

代码实现

可以使用 app()->environment(); 方法实现,生产环境和测试环境的区别。

查看代码后发现可以使用更多的方法。

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 /**   * 获取或检查当前应用程序环境。   *   * @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 函数判断给定的字符串是否匹配给定的模式。星号 * 可以用来表示通配符:

?
1 2 3 4 5 6 # 判断在 API 环境 app()->environment( "production.api" ); # 判断在 ADMIN 环境 app()->environment( "production.admin" ); # 判断在所有环境 app()->environment( "production.*" );

修改 RouteServiceProvider 文件

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 /**   * 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();    } }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

原文链接:https://learnku.com/articles/35099

可以去百度分享获取分享代码输入这里。
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

【腾讯云】云服务器产品特惠热卖中
搜索
标签列表
    关注我们

    了解等多精彩内容