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. 通过状态码结束进程,并判断是否执行成功。
相关推荐
n***293213 分钟前
PHP安全编程实践
开发语言·安全·php
b***748836 分钟前
PHP在电子商务系统中的构建
开发语言·php
BingoGo1 小时前
PHP8.6 新的 RFC 提案 Context Managers 优雅管理资源生命周期
后端·php
JaguarJack2 小时前
PHP8.6 新的 RFC 提案 Context Managers 优雅管理资源生命周期
php·服务端
月下的郁王子2 小时前
进阶学习 PHP 中的二进制和位运算
android·学习·php
饭九钦vlog6 小时前
修复重装机kali机器上不了网络域名问题一键脚本
服务器·网络·php
未来之窗软件服务8 小时前
幽冥大陆(二十九)监控平台协议常见地址——东方仙盟练气期
开发语言·php·东方仙盟·东方仙盟sdk·监控协议
拾忆,想起9 小时前
Dubbo网络延迟全链路排查指南:从微服务“快递”到光速传输
网络·网络协议·微服务·架构·php·dubbo
q***062913 小时前
PHP进阶-在Ubuntu上搭建LAMP环境教程
开发语言·ubuntu·php
life码农13 小时前
在 Laravel框架 Blade 模板中显示原始的 {{ }} 符号的几种方法
php·laravel