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. 通过状态码结束进程,并判断是否执行成功。
相关推荐
JaguarJack7 小时前
PHP 基金会宣布:Streams 现代化 将引入事件循环与异步新能力
后端·php
亿坊电商15 小时前
PHP后端项目中多环境配置管理:开发、测试、生产的优雅解决方案!
服务器·数据库·php
ZIM学编程21 小时前
「学长有话说」作为一个大三学长,我想对大一计算机专业学生说这些!
java·c语言·数据结构·c++·python·学习·php
普普通通的南瓜1 天前
《国家安全法》下的 SSL 证书定位:网络数据加密的 “法定基石”
网络·php·ssl
BingoGo1 天前
PHP 组件未来:Livewire 4 正式发布,性能更快,功能更完整
后端·php
JaguarJack1 天前
PHP 组件未来:Livewire 4 正式发布,性能更快,功能更完整
后端·php
半桔1 天前
【IO多路转接】深入解析 poll:从接口到服务器实现
linux·运维·服务器·php
Z3r4y2 天前
【代码审计】ECShop_V4.1.19 SQL注入漏洞 分析
php·代码审计·ecshop
ICT系统集成阿祥2 天前
华为CloudEngine系列交换机堆叠如何配置,附视频
开发语言·华为·php
Xiaok10182 天前
libpcap 抓包:从打开网卡到解析数据包
服务器·网络·php