关闭服务(使服务处于维护模式)
概述:
- 使用
php artisan down
向storage/framework/
写入文件down
- 使用
CheckForMaintenanceMode
中间件, 中间件会判断storage/framework/down
是否存在 - 存在
down
文件即是 维护模式, 并抛出一个HttpException(503)
- 异常处理器发现异常是
HttpException
, 会尝试去寻找有没有对应的view
并渲染 - laravel 默认有
resources/views/errors/503.blade.php
关键代码
path: app/Http/Kernel.php
|
|
path: CheckForMaintenanceMode.php
12345678910111213141516171819
public function handle($request, Closure $next){ if ($this->app->isDownForMaintenance()) { throw new HttpException(503); } return $next($request);}/** * Determine if the application is currently down for maintenance. * * @return bool */public function isDownForMaintenance(){ return file_exists($this->storagePath().'/framework/down');}
php artisan down
path: laravel/framework/src/Illuminate/Foundation/Console/DownCommand.php
|
|
php artisan up
path: laravel/framework/src/Illuminate/Foundation/Console/DownCommand.php
|
|