laravel(源码阅读):kernel过程和console调度artisan命令

http kernel

使用相关:通过artisan命令、计划任务、队列启动框架进行处理的

  1. 创建应用实例
  2. 绑定内核到容器
  3. 解析http内核实例
  4. 处理http请求
  5. 发送响应
  6. 终止应用程序,中间件 terminable 善后。session写入存储器中。

Console

artisan工具:执行计划任务、异步队列,通过Console内核来实现。

内核绑定

  1. 定义调度
  2. 执行加载app里面的命令文件,并请求或者routes/console.php文件。
  3. 实例化时,定义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'来接收所有的命令行输入的

执行命令任务

  1. _SERVER\['argv\],第一个0指的'artisan'字符串
  2. Symfony\Component\Console\Input处理输入
  3. Symfony\Component\Console\Output处理输出
  4. handle
    1. run
    2. doRun
      1. 解析命令名称
      2. 解析出入参
      3. 通过命令名称查找命令类
      4. 运行命令类
    3. doRunCommand
      1. run 处理任务,返回状态码。run方法定义在父类中,其中定义了子类的handle方法。
  5. 通过状态码结束进程,并判断是否执行成功。
相关推荐
海天鹰9 小时前
PHP上传文件
android·开发语言·php
shiyi.十一12 小时前
第7章:无线网络和移动网络 — 知识要点与架构
网络·架构·php
晓梦林13 小时前
[极客大挑战 2019]PHP学习笔记
笔记·学习·php
2401_8949155313 小时前
Geo优化系统源码部署搭建技术——PHP程序开发部署指南
开发语言·php
HH‘HH16 小时前
前端应用的离线暂停更新策略:原理、实现与最佳实践
开发语言·前端·php
xlq2232217 小时前
高并发服务器day8(含服务器完整架构)
运维·服务器·php
Loongproxy18 小时前
2026年隧道带IP哪个好?国内代理IP服务商排名:高匿、稳定、性价比对比
网络·tcp/ip·php
twcc_come2 天前
安全策略配置实验报告
开发语言·php
weixin_BYSJ19872 天前
springboot3家政平台小程序--附源码00904
java·javascript·spring boot·python·django·flask·php
上海安当技术2 天前
车间电脑指纹登录怎么做?从 FIDO2 公钥体系到统一身份认证的技术拆解
开发语言·电脑·php