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. 通过状态码结束进程,并判断是否执行成功。
相关推荐
正在走向自律7 小时前
使用atop工具监控Linux系统指标
linux·运维·php·实时监控·atop分析内存
2401_8949155313 小时前
Geo 优化源码部署常见报错排查:连接失败、地图加载、地域词失效解决方案
服务器·开发语言·python·安全·php
2601_9657984713 小时前
My Honest Review of Rank Math SEO Pro for Beginner Sites
数据库·人工智能·php
vx-程序开发17 小时前
django医院预约挂号系统---附源码23353
java·javascript·spring boot·python·eclipse·django·php
三84419 小时前
RCE长度&字符限制绕过
开发语言·php
莫凡的博客19 小时前
火山引擎-基础入门阶段细化实操案例
人工智能·php·火山引擎
代龙涛20 小时前
WordPress sidebar.php 侧边栏开发教程
开发语言·php·wordpress
weixin_BYSJ198721 小时前
springboot医疗信息管理系统---附源码17465
java·javascript·spring boot·python·django·flask·php
三8441 天前
有限字符RCE绕过/蚁剑/usort变长参数绕过
php
AI直播技术杂谈1 天前
AI直播推流链路中延迟优化的通用技术方案
开发语言·人工智能·php