我的地盤我作主 - Laravel維護模式自定義

在這裏插入圖片描述

微信公衆號:網管小賈
個人博客:www.sysadm.cc

不得不承認,現實中不管你的系統是多麼的簡單還多麼的複雜,總是逃不脫更新和維護這一大問題。

但如果你使用過Laravel來建立站點系統的話,肯定多少會瞭解到它的維護模式還算是方便易上手。

瞧!兩條命令搞定一切。

php artisan downphp artisan up,一個啓用,一個關閉。

超級簡單是不是?


再複雜一些,也不過是加了幾個選項,如:

message 顯示或記錄自定義消息

php artisan down --message="Upgrading Database"

allow 維護模式中允許特定的網絡訪問

php artisan down --allow=127.0.0.1 --allow=192.168.0.0/16

簡單易懂吧?可惜並不輕鬆愉快!

爲什麼這麼說尼?

原因很扎心,如果遇到頻繁需要維護的場景,每次都要手寫一番消息和特定許可IP,的確感覺有些吃不消啊!

那怎麼辦?

還能怎麼辦,盤它唄!

在這裏插入圖片描述

微信公衆號:網管小賈
個人博客:www.sysadm.cc

通過一頓猛操作,網上蒐集到的信息這麼那麼一綜合,有了!

基本思路是,修改中間件 CheckForMaintenanceMode.php ,通過數據庫讀取出自定義消息和特定IP地址。

如果符合特定允許條件,則正常返回請求,否則顯示出自定義維護消息。

1、找到中間件 CheckForMaintenanceMode.php 的handle方法。

2、添加以下代碼,用於判斷是否開啓了維護模式(實際是判斷 storage/framework/下是否存在 down 文件)

if ($this->app->isDownForMaintenance()) {}

3、允許IP地址的判斷代碼,這個最好寫在判斷down文件內容的前面。

// 讀取維護模式所需的消息及特定IP地址
$config = Config::where('cfg_name', 'SITE_MAINTENANCE_ALLOWED')
	->orWhere('cfg_name', 'SITE_MAINTENANCE_MESSAGE')
	->pluck('cfg_value', 'cfg_name')->toArray();

// 允許的IP地址,由字符串轉成數組形式
// 如:'127.0.0.1', '10.10.10.10' 轉換爲 ['127.0.0.1', '10.10.10.10']
$allowed_ip = explode(',', $config['SITE_MAINTENANCE_ALLOWED']);

// 如果在允許範圍內,則正常返回請求
if (in_array($request->getClientIp(), $allowed_ip)) {
	return $next($request);
}

顯示自定義維護消息,寫在down文件判斷的後面比較好。

if($request->ajax()){
	// 如果是ajax請求,則返回相應信息
	return response()->json();
} else {
	// 如果有系統維護的自定義消息內容,則顯示之
	if (!empty($config['SITE_MAINTENANCE_MESSAGE'])) {
		$data['message'] = $config['SITE_MAINTENANCE_MESSAGE'];
}

    // 拋出503
    abort(503, $data['message'] == null || $data['message'] == '' ? '很抱歉,系統維護中! 請稍後再試!' : $data['message']);
}

總結一下,大概按照以下流程。

先判斷自定義的IP,再判斷down文件的allow,最後顯示自定義維護消息。

實際使用中就很方便啦!

每次需要維護時,只要事先編輯好維護的提示消息和可以訪問的IP地址,然後直接打上 php artisan down 開啓維護模式,完事後再 php artisan up 關閉維護恢復正常訪問就歐了。真香!

在這裏插入圖片描述當然,數據庫的配置項你應該會創建的吧,官方手冊裏有寫哦。

還是不會?那你可以留言給我。

複製代碼太麻煩?這有下載鏈接,拿去。

CheckForMaintenanceMode.php 源碼下載 密碼:7t33

公衆號:網管小賈

微信公衆號:網管小賈
個人博客:www.sysadm.cc

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章