Code前端首页关于Code前端联系我们

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

terry 2年前 (2023-09-25) 阅读数 50 #后端开发

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

用户数量增加后,一台服务器已经不够用了,所以项目采用了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("");
# 判断在 ADMIN 环境
app()->environment("");
# 判断在所有环境
app()->environment("production.*");

Edit RouteServiceProvider File

/**
 * Define the routes for the application.
 */
public function map()
{
  // 公共路由

  if (app()->environment('')) {
    # production api 路由
    $this->mapApiRoutes();
  } elseif (app()->environment('')) {
    # production admin 路由
    $this->mapAdminRoutes();
  } else {
    # local testing stanging 环境下加载所有路由
    $this->mapApiRoutes();

    $this->mapAdminRoutes();
  }
}

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门