有一天,做日常接口开发,突然接口不行了,报错:
[2020-02-15 15:12:57] local.ERROR: Handler:render {"class":"Illuminate\\Foundation\\Http\\Exceptions\\MaintenanceModeException","file":"D:\\qyPj\\OEM\\hans_online\\api-oem-test.qywww.com\\vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Http\\Middleware\\CheckForMaintenanceMode.php","line":43,"message":"","code":0,"trace":""}
马上找到vendor\\laravel\\framework\\src\\Illuminate\\Foundation\\Http\\Middleware\\CheckForMaintenanceMode.php对应的43行:
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*
* @throws \Symfony\Component\HttpKernel\Exception\HttpException
*/
public function handle($request, Closure $next)
{
if ($this->app->isDownForMaintenance()) {
$data = json_decode(file_get_contents($this->app->storagePath().'/framework/down'), true);
throw new MaintenanceModeException($data['time'], $data['retry'], $data['message']);
}
return $next($request);
}
}
43行是: throw new MaintenanceModeException($data['time'], $data['retry'], $data['message']);
马上查了了这个CheckForMaintenanceMode模式,叫做维护模式,
查看文档:https://learnku.com/docs/laravel/5.5/configuration/1283#maintenance-mode
如下
维护模式
当应用程序处于维护模式时,所有对应用程序的请求都显示为一个自定义视图。这样可以在更新或执行维护时轻松地「关闭」你的应用程序。 维护模式检查包含在应用程序的默认中间件栈中。如果应用程序处于维护模式,则将抛出一个状态码为 503 的 MaintenanceModeException
异常。
要启用维护模式,只需执行下面的 Artisan 命令 down
:
php artisan down
你还可以向 down 命令提供 message
和 retry
选项。其中 message 选项的值可用于显示或记录自定义消息,而 retry 值可用于设置 HTTP 请求头中 Retry-After
的值:
php artisan down --message="Upgrading Database" --retry=60
要关闭维护模式,请使用 up
命令:
php artisan up
{tip} 你可以通过修改
resources/views/errors/503.blade.php
模板文件来自定义默认维护模式模板。
维护模式和队列
当应用程序处于维护模式时,不会处理 队列任务。而这些任务会在应用程序退出维护模式后再继续处理。
维护模式的替代方案
维护模式会导致应用程序有数秒的停机(不响应)时间,因此你可以考虑使用像 Envoyer 这样的替代方案,以便与 Laravel 完成零停机时间部署。
应该是我之前尝试artisan命令时,运行了php artisan down命令
运行php artisan up,接口项目又可以了