为什么80%的码农都做不了架构师?>>>   

由于某种原因,公司整体框架由python的flask框架,转换为php的laravel。在断断续续几个月的时间里,边继续写着flask框架,边学着laravel。说下自己现在的状态吧。前段时间差不多都在个1-2点睡觉,大概四月份有段时间竟然到了3-4点才睡的地步。

路漫漫其修远兮,总感觉时间不够用的。大概是自己之前浪费的时间太多了,是时候还上了。


laravel文档中文版的,大概看到过三个。随便找个看看就可以了。http://laravel-china.org/docs/5.1

# 输入 php artisan 即可看到全部可用命令down                 Put the application into maintenance modeup                   Bring the application out of maintenance mode

整体流程大体(因为详细的我也不是很清楚╮(╯_╰)╭)说下吧。

一、命令的实现

1. 作为服务提供者,加载到程序中。

// config/app.php 中。
'providers' => [// 这个便是 laravel自带的 artisan 命令提供者Illuminate\Foundation\Providers\ArtisanServiceProvider::class,
]

2.然后找到 Up/Down 命令入口

/*** Register the command.** @return void*/
protected function registerUpCommand()
{$this->app->singleton('command.up', function () {return new UpCommand;});
}/*** Register the command.** @return void*/
protected function registerDownCommand()
{$this->app->singleton('command.down', function () {return new DownCommand;});
}

3.1 DownCommand实现

class DownCommand extends Command
{/*** The console command name.** @var string*/protected $name = 'down';/*** The console command description.** @var string*/protected $description = 'Put the application into maintenance mode';/*** Execute the console command.** @return void*/public function fire(){// 关键点: 在当前存储目录/framework 下面创建一个 down文件touch($this->laravel->storagePath().'/framework/down');$this->comment('Application is now in maintenance mode.');}
}// touch() 函数php文档解释
/*** Sets access and modification time of file* @link http://php.net/manual/en/function.touch.php* @param string $filename <p>* The name of the file being touched.* </p>* @param int $time [optional] <p>* The touch time. If time is not supplied, * the current system time is used.* </p>* @param int $atime [optional] <p>* If present, the access time of the given filename is set to * the value of atime. Otherwise, it is set to* time.* </p>* @return bool true on success or false on failure.* @since 4.0* @since 5.0*/
function touch ($filename, $time = null, $atime = null) {}

3.2 UpCommand 实现

class UpCommand extends Command
{/*** The console command name.** @var string*/protected $name = 'up';/*** The console command description.** @var string*/protected $description = 'Bring the application out of maintenance mode';/*** Execute the console command.** @return void*/public function fire(){// 关键:删除laravel存储目录/fromework 下面的 down 文件@unlink($this->laravel->storagePath().'/framework/down');$this->info('Application is now live.');}
}// @unlink() php文档解释
/*** Deletes a file* @link http://php.net/manual/en/function.unlink.php* @param string $filename <p>* Path to the file.* </p>* @param resource $context [optional] &note.context-support;* @return bool true on success or false on failure.* @since 4.0* @since 5.0*/
function unlink ($filename, $context = null) {}

二、如何工作的

1. 当然是使用中间件了

// Http/Kernel.php 文件里面
class Kernel extends HttpKernel
{/*** The application's global HTTP middleware stack.** @var array*/protected $middleware = [// 就是这个东西了\Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,];
}

2. 继续看中间件的实现

class CheckForMaintenanceMode
{/*** The application implementation.** @var \Illuminate\Contracts\Foundation\Application*/protected $app;/*** Create a new middleware instance.** @param  \Illuminate\Contracts\Foundation\Application  $app* @return void*/public function __construct(Application $app){$this->app = $app;}/*** 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){// 当这个条件成立时,直接抛出 HttpException(503) 异常。// 默认情况下,该请求会直接显示 resources/views/errors/503.blade.php 页面if ($this->app->isDownForMaintenance()) {throw new HttpException(503);}return $next($request);}
}// 再看 isDownForMaintenance() 函数/*** Determine if the application is currently down for maintenance.** @return bool*/
public function isDownForMaintenance()
{// 重点:判断一下 laravel的storagePath/framework 下面是否存在 down 文件return file_exists($this->storagePath().'/framework/down');
}

总结:

其实呢,这些只是一个抛砖引玉的过程。只是拿框架的一个小东西来扯扯而已。还是那句话:路漫漫其修远兮。加油吧,少年~

1.  php artisan down => 在storagePath/framework 下面创建 down文件; php artisan up => 删除 down 创建 down文件

2.  laravel 默认中间件,检查storagePath/framework 下面是否存在down文件,若存在则抛出503异常

转载于:https://my.oschina.net/lpe234/blog/689059

Laravel框架学习 -- php artisan down/up相关推荐

  1. laravel database.php,php Laravel框架学习(一) 之 建立数据库并填充测试数据

    php Laravel框架学习(一) php Laravel框架学习之Laravel 建立数据库并填充测试数据 建立数据库 前面我们已经明确目标网站的基本功能,现在我们先来建立它的数据库. 设计数据库 ...

  2. php laravel 教程,Laravel框架学习之新手教程

    本篇文章主要讲述了新手学习laravel的过程中必须要了解的事项,具有一定的参考价值准备学习laravel框架的朋友一定不能错过哦,希望看完能对你有所帮助. 一.Laravel环境搭建 1.windo ...

  3. Laravel框架学习

    前言: 首先,了解 Laravel 的核心概念是非常重要的.Laravel 使用了现代化的 MVC(模型-视图-控制器)架构模式,这有助于将代码逻辑分离,提高应用的可维护性和可扩展性.同时,Larav ...

  4. laravel框架学习之路(一)前后台用户认证分离

    准备工作: 1.下载laravel框架 2.配置好项目(数据库连接以及虚拟主机) 开始: 前台用户认证laravel已经为我们写好了,此部分可参考官方文档 创建模型(以adminstrator为例) ...

  5. Laravel框架学习笔记(一)——phpstudy下的安装配置

    2019独角兽企业重金招聘Python工程师标准>>> 网上关于如何安装laravel框架的教程很多,就不多说了,推荐大家去看http://www.golaravel.com/里的教 ...

  6. [Laravel框架学习一]:Laravel框架的安装以及 Composer的安装

    1.先下载Composer-Setup.exe,下载地址:下载Composer .会自动搜索PHP.exe的安装路径,如果没有,就手动找到php路径下的php.exe. 2.在PHP目录下,打开php ...

  7. laravel框架学习(三)

    接着一套增删改查之后再学习一下自定义文件上传类实现文件上传下载 /public/uploads 文件上传位置 /app/Org/Upload.php 自定义文件上传类 1 <?php 2 //自 ...

  8. php larval框架运行环境,Laravel框架的运行环境配置(一)

    Laravel框架 学习参考: Laravel的特点; 单一入口:所有请求必须从单入口开始,主要是关于管理[统一的参数过滤] MVC的思想 ORM操作数据库 一个模型对应数据库里面的一张表,对象的属性 ...

  9. 关于php中laravel框架的学习--适合菜鸟初学者

    关于php中laravel框架的学习 关于laravel的介绍就不讲了,总之laravel是款比较强大的框架,它是国外框架所以在安装的上面可能比较麻烦. laravel的安装 首先安装laravel之 ...

最新文章

  1. 日常生活 -- 嵌入式再学习前言
  2. 解读Android LOG机制的实现
  3. BigTable的开源实现:HBase数据库
  4. access vba在新建查询前查看查询名是否存在
  5. Python机器学习:KNN算法06网格搜索
  6. web安全之XSS攻击
  7. 脱库和删库的实践及解决方案
  8. 企业产品互联网推广的有效方法
  9. GIF动态图片分解,多帧动态图分解成多张静态图片
  10. 医学界的动作捕捉系统(一)
  11. 二等分计算机打印机尺寸,241两等分打印纸尺寸 电脑打印纸,规格241mm等份是2等份,是多大的纸呀?...
  12. 2020-12-19 nn.CrossEntropyLoss()
  13. 大二上学期总结与感想
  14. Python爬取淘宝商品信息
  15. c语言16进制怎么计算器,问各位大侠一个16进制计算器的问题(Charles Petzold著《windows程序设计》第11章)...
  16. 解决UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xc8 in position 0: invalid continuation byte
  17. 使用openssl制作证书和进行CMS格式数字签名
  18. python猜数字小游戏制作
  19. 从1到无穷大--深度学习篇
  20. Stanford CS230深度学习(八)词嵌入与文本情感分析

热门文章

  1. matlab练习程序(图像区域分裂)
  2. 阿里云联合8家芯片商推“全平台通信模组”,加速物联网生态建设...
  3. PyCUDA学习:gpuarray与kernel的抽象原型
  4. 修改 Idea 终端 Terminal 为 GitBash 或 Cmder
  5. 1分钟选好最合适你的JavaScript框架
  6. webstorm的使用技巧——1
  7. Centos下 安装和测试kafka
  8. Javascript 基础知识之数据类型
  9. Server-U的批量用户创建
  10. 耗时很长的服务器端事件中让客户端得到中间过程信息的合理解决方案