artisan工具:执行计划任务、异步队列,通过Console内核来实现。
内核绑定
- 定义调度
- 执行加载app里面的命令文件,并请求或者routes/console.php文件。
- 实例化时,定义ARTISAN_BINARY全局变量,并且绑定app和事件,启动回调执行定义console调度。
应用解析console内核
$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’]来接收所有的命令行输入的
执行命令任务
- $_SERVER['argv],第一个$0指的’artisan’字符串
- Symfony\Component\Console\Input处理输入
- Symfony\Component\Console\Output处理输出
- handle
- run
- doRun
- 解析命令名称
- 解析出入参
- 通过命令名称查找命令类
- 运行命令类
- doRunCommand
- run 处理任务,返回状态码。run方法定义在父类中,其中定义了子类的handle方法。
- 通过状态码结束进程,并判断是否执行成功。