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. 通过状态码结束进程,并判断是否执行成功。
相关推荐
我不听你讲话10 小时前
LNMP网络服务搭建
linux·php·apache
流水迢迢lst13 小时前
靶场练习day15--php反序列化
开发语言·php
echome88815 小时前
Python 异步编程实战:async/await 从入门到精通
开发语言·python·php
catchadmin20 小时前
用 Laravel AI SDK 构建多智能体工作流
人工智能·php·laravel
buhuimaren_21 小时前
LAMP架构部署配置
nginx·php
三七吃山漆1 天前
变量覆盖冲突与构造字符串逃逸漏洞
php
m0_612591971 天前
江苏智算中心排名与格局分析:尚航科技无锡智算中心的标杆地位
运维·服务器·科技·php·idc
森叶1 天前
《深度拆解数据库连接池:从底层 TCP 原理到 PHP-FPM 与 Swoole/Go 的架构演进》
数据库·tcp/ip·php
XDHCOM1 天前
PHP用来把Oracle的数据搬到Mysql里边的一个具体操作示范过程
mysql·oracle·php
BingoGo1 天前
告别阻塞!用 PHP TrueAsync 实现 PHP 脚本提速 10 倍
后端·php