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. 通过状态码结束进程,并判断是否执行成功。
相关推荐
wapicn9911 小时前
智能识别技术在生活服务领域的落地应用与前景展望
java·c++·人工智能·python·php
zhouping@11 小时前
[BSidesCF 2020]Hurdles
学习·php
吠品11 小时前
QEMU Windows虚拟机NAT网络配置指南:实现IP自动获取与外部访问
开发语言·php
ProgramHan12 小时前
十大排行榜——后端语言及要介绍
java·c++·python·php
withoutfear13 小时前
fastadmin表格多tab选项卡组合筛选
php·fastadmin·tp5
luojiezong13 小时前
锐捷网络EDN方案正式发布 园区网络迈入“体验确定性交付“新时代
开发语言·网络·php
ofoxcoding13 小时前
GPT-5.4 Mini vs Nano 怎么选?2026 实测对比,一张表说清楚
开发语言·gpt·ai·php
从删库到跑路养成记13 小时前
Flyenv的php集成开发环境安装yar扩展
php·yar·flyenv
AiTop10013 小时前
Cursor承认Composer 2核心基座源自国产大模型Kimi,双方已达成授权合作
人工智能·gpt·ai·aigc·php·composer
H5css�海秀1 天前
今天是自学大模型的第一天(sanjose)
后端·python·node.js·php