http kernel
使用相关:通过artisan命令、计划任务、队列启动框架进行处理的
- 创建应用实例
- 绑定内核到容器
- 解析http内核实例
- 处理http请求
- 发送响应
- 终止应用程序,中间件 terminable 善后。session写入存储器中。
Console
artisan工具:执行计划任务、异步队列,通过Console内核来实现。
内核绑定
- 定义调度
- 执行加载app里面的命令文件,并请求或者routes/console.php文件。
- 实例化时,定义ARTISAN_BINARY全局变量,并且绑定app和事件,启动回调执行定义console调度。
应用解析console内核
php
$kernel = $app->make(Illuminate\Contracts\Console\Kernel::class);
$status = $kernel->handle(
$input = new Symfony\Component\Console\Input\ArgvInput,
new Symfony\Component\Console\Output\ConsoleOutput
);
PHP是通过全局变量$_SERVER['argv']来接收所有的命令行输入的
执行命令任务
- $_SERVER['argv],第一个$0指的'artisan'字符串
- Symfony\Component\Console\Input处理输入
- Symfony\Component\Console\Output处理输出
- handle
- run
- doRun
- 解析命令名称
- 解析出入参
- 通过命令名称查找命令类
- 运行命令类
- doRunCommand
- run 处理任务,返回状态码。run方法定义在父类中,其中定义了子类的handle方法。
- 通过状态码结束进程,并判断是否执行成功。