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. 通过状态码结束进程,并判断是否执行成功。
相关推荐
YUJIANYUE44 分钟前
PHP黑白胶卷底片图转彩图功能 V2025.05.15
php
为自己_带盐1 小时前
浅聊一下数据库的索引优化
开发语言·数据库·php
Lucky小小吴15 小时前
木马查杀篇—Opcode提取
php·opcode·木马查杀
邪恶的贝利亚18 小时前
《ffplay 读线程与解码线程分析:从初始化到 seek 操作,对比视频与音频解码的差异》
ffmpeg·php·音视频
廖圣平19 小时前
美团核销 第三方接口供应商 (含接口文档)
开发语言·数据库·php
sunsineq19 小时前
[超级简单]讲解如何用PHP实现LINE Pay API!
开发语言·php·linepay
新老农19 小时前
php数据导出pdf,然后pdf转图片,再推送钉钉群
pdf·php·钉钉
上海合宙LuatOS20 小时前
全栈工程师实战手册:LuatOS日志系统开发指南!
java·开发语言·单片机·嵌入式硬件·物联网·php·硬件工程
小诸葛的博客1 天前
Flannel UDP 模式的优缺点
网络协议·udp·php
桃子酱紫君1 天前
华为配置篇-RSTP/MSTP实验
开发语言·华为·php