項目的前期為了開發速度會使用單一應用,就是一個 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();
}
}
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
您可能感興趣的文章:- Laravel給生產環境添加監聽事件(SQL日志監聽)