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. 通过状态码结束进程,并判断是否执行成功。
相关推荐
xiangpanf6 分钟前
PHP vs C语言:30字解析两大编程语言差异
c语言·开发语言·php
海边的梦22 分钟前
救命!此电脑网络位置异常?AD域排错3步封神,DNS/NetLogon/GPO根因一键定位
服务器·开发语言·php
weixin_4493108425 分钟前
ETL转换和数据写入小满OKKICRM的技术细节
数据仓库·php·etl
幽络源小助理32 分钟前
Typecho博客搭建全攻略:宝塔面板安装教程、源码部署 | 幽络源
php·typecho
Qlittleboy1 小时前
thinkphp如何配置模版缓存,来显著提高页面加载速度
缓存·php
Du_chong_huan2 小时前
《网络是怎样连接的》精读版 第六章总述
开发语言·php
带娃的IT创业者17 小时前
WeClaw WebSocket 连接中断诊断:从频繁掉线到稳定长连的优化之路
python·websocket·网络协议·php·fastapi·实时通信
ECT-OS-JiuHuaShan18 小时前
朱梁万有递归元定理,解构西方文明中心论幻觉
开发语言·人工智能·php
码农时代者1 天前
拒绝重复造轮子!开发者如何靠“高质量源码”实现项目高效交付?
java·python·php
历程里程碑1 天前
39. 从零实现UDP服务器实战(带源码) V1版本 - Echo server
服务器·开发语言·网络·c++·网络协议·udp·php