laravel 控制台命令行artisan Artisan 是 Laravel自带的命令行接口,它提供了许多实用的命令来帮助你构建Laravel 应用。...要查看所有可用的 Artisan 命令的列表,可以使用 list 命令: php artisan list 每个命令包含了「帮助」界面,它会显示并概述命令的可用参数及选项。...只需要在命令前面加上 help 即可查看命令帮助界面: php artisan help migrate 编写命令# 除 Artisan 提供的命令之外,还可以构建自己的自定义命令。...生成命令# 要创建一个新的命令,可以使用 Artisan 命令make:command。这个命令会在 app/Console/Commands 目录中创建一个新的命令类。...执行命令时会调用 handle 方法,你可以在这个方法中放置命令逻辑。 修改生成的文件 如下: <?
现在让我们将这个命令通过使用 artisan 命令进行封装,使其更易于运行和可加入计划任务。...Artiasn 控制台接口热身 通过使用 artisan 控制台(console)集成 shell 命令的一个重要出发点是,能够一次编写到处运行。我们要做的是配置并使用这些配置。...这意味着,一旦有参数被修改,我们不需要通过命令本身进行调整。接下来,我们可以来创建这个控制台命令。 通过运行 php artisan make:comman 命令来创建一个自定义命令。...我们将 shell 命令和所需的参数传入到 sprintf() 函数中,它会将占位符替换成实际的参数。在处理完 process 实例后,我们可以进行下一步 handle)( 方法的处理。...如果我们在控制台执行 php artisan db:backup 命令,我们就会到此处数据库然后将其保存到 storage/backups/backup.sql 文件。
#查看所有可用的 Artisan 命令 php artisan list #查看命令帮助 php artisan help migrate Tinker 命令 (REPL) Laravel Tinker...编写命令 即控制台应用。 除 Artisan 提供的命令外,你也可以编写自己的自定义命令。命令在多数情况下位于 app/Console/Commands 目录中。...# php artisan article:publish cw cw 定义输入期望 在编写控制台命令时,通常是通过参数和选项来收集用户输入的。...' ]); // }); 从一个命令调用另一个命令 /** * 执行控制台命令。...' => 1, '--queue' => 'default' ]); // } Stub 定制 Artisan 控制台的 make 命令用于创建各种类。
2.2 command方式 生成命令:php artisan make:command SayHello <?...* * @return mixed */ public function handle() { //书写处理逻辑 \Log...$this->user->email); } } 3.3 分发任务 你写好任务类后,就能通过 dispatch 辅助函数来分发它了。...3.4 运行队列处理器 php artisan queue:work Tips:要注意,一旦 queue:work 命令开始,它将一直运行,直到你手动停止或者你关闭控制台 处理单一任务:你可以使用 --...拓展:使用 Beanstalkd 管理队列,Supervisor 则是用来监听队列的任务,并在队列存在任务的情况下自动帮我们去执行,免去手动敲 php artisan 的命令,保证自己的队列可以正确执行
在 artisan 文件中,处理流程会像 Web 请求一样,注册类的自动加载器,初始化容器和异常处理器,获取用户输入,执行处理逻辑,最后发送响应,只不过这一切都是在控制台中完成。...我们在执行 php artisan 命令时,artisan 就指的是根目录下的 artisan 文件,所以命令需要在应用根目录下执行,然后 artisan 之后的部门都是作为请求参数被控制台应用获取并处理...,在控制台执行命令时用到 * * @var string */ protected $signature = 'welcome:message'; /**...* * @return mixed */ public function handle() { // } } 注册命令类 创建完...handle 方法中,这里我们先简单打印一条欢迎信息: public function handle() { $this->info('欢迎访问 Laravel 学院!')
命令、回调函数或者 Shell 脚本等: protected function schedule(Schedule $schedule) { // 每小时调度一个 Artisan 命令...我们从调度任务的入口 schedule:run Artisan 命令开始,其对应的命令类是 Illuminate\Console\Scheduling\ScheduleRunCommand,入口函数是...handle 方法: public function handle(Schedule $schedule, Dispatcher $dispatcher, ExceptionHandler $handler...方法格式化后的形如 /path/to/php /path/to/app/artisan command parameters 的 Artisan 命令 Shell 脚本。...调度任务是如何执行的 以上调度任务的注册是在控制台应用启动时完成的,当我们运行 Artisan 命令就会启动控制台应用,比如 schedule:run,并且会注册所有的调度任务到 Schedule 对象的
function __construct(Article $article) { $this->article=$article; } public function handle...() { Log::info($this->article); //todo 发布文章 } } 调度任务,在web应用的控制器中,或控制台命令中都可以调用...您可以通过发出 queue:restart 命令优雅地重新启动所有进程: php artisan queue:restart 队列驱动 null 丢弃排队任务 QUEUE_CONNECTION=null...但是,如果您的应用程序不包含此表的迁移,您可以使用 queue:failed-table 命令来创建迁移: php artisan queue:failed-table php artisan migrate...传递: php artisan queue:retry all #如果要删除指定的失败任务,可以使用 queue:forget 命令: php artisan queue:forget 91401d2c
常用命令 #显示系统注册的事件和监听器的列表 php artisan event:list 生成事件和监听器 一、 手动 生成单个事件和监听器 php artisan make:event PublishArticlesEvent...php artisan make:listener PublishArticlesListener --event=PublishArticlesEvent 2.手动注册注册事件和监听器 root@php-fpm...PublishArticlesEvent::class => [ PublishArticlesListener::class, ], ]; } 执行 php artisan...PublishArticlesListener { public function __construct() { // } public function handle...{ Log::info("article.."); Log::info($event->article); } 调度事件 即触发事件,在web应用的控制器中,或控制台命令中都可以调用
默认提供的脚本 在当前的框架目录中,我们在根目录执行 php artisan ,就可以看到命令行的帮助信息,这里就列出了所有已经存在的命令行脚本。第一篇文章中,我们就接触过这其中的两个命令。...比如我们现在直接执行 php artisan 的话,就会看到下面这样一条可执行命令行脚本的出现。...Laravel 已经将这些封装好了,不需要再去使用那些函数来进行接收处理,直接使用就可以了。...() 函数中,我们可以编写当前这个脚本需要执行的功能代码。...那么 Laravel 是如何执行 handle() 函数的呢?
Laravel为了能让应用满足这些场景设计了 artisan工具,通过 artisan工具定义各种命令来满足非HTTP请求的各种场景, artisan命令通过Laravel的Console内核来完成对应用核心组件的调度来完成任务...脚本执行的命令,在 artisan脚本中 $_SERVER['argv']数组里索引0对应的永远是 artisan这个字符串,命令行里后面的参数会依次对应到 $_SERVER['argv']数组后续的元素里...(shell脚本里其实也是一样,会通过shell函数getopts来解析各种格式的命令行参数输入),同样地Laravel使用了 Symfony\Component\Console\Output对象来抽象化命令行的标准输出...还有就是打开命令类后我们可以看到并没有run方法,我们把处理逻辑都写在了 handle方法中,仔细查看代码会发现 run方法定义在父类中,在 run方法会中会调用子类中定义的 handle方法来完成任务处理...结束应用 执行完命令程序返回状态码后, 在 artisan中会直接通过 exit($status)函数输出状态码并结束PHP进程,接下来shell进程会根据返回的状态码是否为0来判断脚本命令是否执行成功
} handleEventA方法只是简单地将Event中的data进行了lowerCase之后的输出 handleEventB方法也是足够的简单,直接将Event中的字符串数据变成大写进行了控制台输出...return result; } } /** * 处理ResultEvent的Handler(Channel),只是简单地将计算结果输出到控制台...进行相加操作,然后将结果封装成ResultEvent提交给EventDispatcher, ResultEvent相对比较简单,只包含了计算结果的属性,ResultEventHandler则将计算结果输出到控制台上...ExecutorService多线程的方式提交给Message */ private final ExecutorService executorService; /** * 默认构造函数...@Override public final void dispatch(Event message) { executorService.submit(() -> this.handle
为了直观地给大家展示这个分布式锁的效果,我们在 Laravel 中编写一个 Artisan 命令来模拟并发运行的应用: php artisan make:command ScheduleJob 先看看不使用分布式锁的运行情况...public function __construct() { parent::__construct(); } public function handle...打开两个终端窗口同时运行这个 Artisan 命令,并传入不同的进程 ID: 打开日志文件,可以看到运行记录呈犬牙交错状: 两个进程可以并行处理这个程序,由于没有引入锁机制,所以如果把 for 循环看作一个资源处理...命令 schedule:job,这一次的日志输出结果就变成先执行一个进程,再执行另一个进程了: 这是因为锁生效的缘故。...由于这把锁是基于 Redis 实现的,所以它既可以作为 Laravel 应用中普通进程之间的锁,也可以作为分布式锁,不过对于 PHP 应用而言,主要的多进程场景在于控制台应用,比如消息队列这种多进程处理
在上一篇教程中,学院君向大家介绍了什么是 Artisan 命令,系统内置的 Artisan 命令,以及如何编写一个简单的 Artisan 命令。...我们完全可以将命令行看作与 Web 应用同等的控制台应用(实际上,Laravel 底层也是这么做的),它具备自己的路由、Kernel、输入、控制器(命令类)、输出。...类似的,在命令类中可以通过 public function handle() { $this->info('欢迎来自' . $this->option('city') . '的' ....在应用代码中调用 Artisan 命令 除了在命令行运行 Artisan 命令之外,还可以在应用代码中通过 Artisan 门面调用它。...你还可以在一个 Artisan 命令类中调用另一个 Artisan 命令,在命令类中调用 Artisan 命令,可以通过 Artisan:call(),也可以直接通过 this->call() 方法,还可以通过
政策而被删除时发送 A 参数 g$lshzxe 的别名 好了,言归正传,接下来在 Laravel 中,我是新建一个 Command 命令 php artisan make:command OrderExpire...* * @return int */ public function handle() { $redis = Redis::connection...function () { Redis::setex('order_2000123421',5,'2000123421'); }); 接下来运行行项目 我们首先在 Laravel 项目中运行 控制台命令...php artisan order:expire 接下来在 red-cli 中也监听过期命令 redis-cli 127.0.0.1:6379> psubscribe __keyevent@0__:expired...pmessage" 2) "__keyevent@0__:expired" 3) "__keyevent@0__:expired" 访问路由文件,设置 Redis Key,但是你会发现实际上我们编写的控制台命令
/** * 持有真正的对象 */ private RealSubject realSubject; /** * 传入要代理的对象, 通过构造函数实例化代理对象...{ void request(); String handle(String inParams); } package com.artisan.proxy.dynamic_jdk_proxy.../ public class DynamicJdkProxyDemo { public static void main(String[] args) { // 创建真实(返回值请使用接口来接收...= subjectProxy.handle("1-testInParams"); System.out.println(handle); System.out.println...; /** * @author artisan */ public interface Subject { void request(); String handle(String
我们可以使用cmd命令来设置控制台窗口的长宽:设置控制台窗口的大小为30行,100列 mode con cols=100 lines=30 你可以在微软开发文档中获取更多mode命令。...也可以通过命令设置控制台窗口的名字: title 贪吃蛇 你可以在微软开发文档中详细了解title命令。 这些能在控制台窗口执行的命令,也可以调用C语言函数system来执行。...); //在意这个返回值 以上接口配合使用: //获取句柄 HANDLE hOutput = GetStdHandle(STD_OUTPUT_HANDLE); //隐藏光标操作 //创建接受光标信息的变量...,函数通过返回值来分辨按键的状态。...GetAsyncKeyState 的返回值是short类型,在上一次调用 GetAsyncKeyState 函数后,如果返回的16位的short数据中,最高位是1,说明按键的状态是按下,如果最高是0,说明按键的状态是抬起
// ScheduleRunCommand::handle函数 public function handle() { foreach ($this->schedule->dueEvents()...:php artisan test:hello ->cron('10 11 1 * *') // 每月1日的11:10:00执行该命令 ->timezone('Asia/Shanghai...something*/}) // 后置钩子,命令执行完之后执行此回调 ->runInBackground(); // 后台运行本命令 // 每分钟执行command命令:php artisan...该命令被附在了本来要执行的command命令后面,用来检测并执行后置钩子函数。...php artisan schedule:finish 的源代码非常简单,用mutex_name来唯一标识一个待执行任务,通过比较系统中注册的所有任务的mutex_name,来确定需要执行哪个任务的后置函数
Laravel 中的 Artisan 命令行是这样 // 创建命令 php artisan make:command SendEmails // 运行命令 php artisan mail:send /.../ 使用参数 php artisan mail:send hello // 使用选项 php artisan mail:send --mail=abc@qq.com Goravel 中的 Artisan...命令行也一样 // 创建命令 go run . artisan make:command SendEmails // 运行命令 go run . artisan mail:send // 使用参数 go...func (receiver *SendEmails) Extend() console.CommandExtend { return console.CommandExtend{} } //Handle...Execute the console command. func (receiver *SendEmails) Handle(c *cli.Context) error { return nil
新版本提供了一个全新的 Artisan 生成工具,通过它可以快速生成这些文件: $ php artisan make:command DuplicateTalkCommand 默认情况下,这条命令会生成一个自处理的命令...) (假设使用了 --handler 参数),并且生成的处理程序中的 handle 方法会自动加上与其匹配的命令的类型约束。...编辑 DuplicateTalkCommandHandler, 在 handle() 方法中编写具体代码,完成你需要执行的操作。 在控制器或者 Artisan 命令中调度(调用)这个命令。...class, $request); // ... } Laravel 会自动在传入的数组或者 arrayAccessible 对象中去寻找与属性名相同的 key, 取出对应的值来调用命令的构造函数...classes 或者任何其它类型到你的命令处理程序的构造函数中,然后在 handle() 方法中调用它们。
Laravel中Artisan Command内容可以参看:服务 —— Artisan Console,Mail邮件服务内容可以参看:服务 —— 邮件,以及Task-Scheduler任务定时器可以参看...Artisan Command 新建一个artisan command: php artisan make:console SendEmails --command=emails:send 并在AppConsoleCommandsSendEmails.php...'); $this->error('I am not ugly'); } } 写上description和handle()方法,description变量用来显示命令的说明,handle...()用来处理命令,然后在AppConsoleCommandsKernel.php中注册命令: protected $commands = [ // Commands\Inspire::class..., Commands\SendEmails::class, ]; 好,这下可以在终端输入php artisan查看并执行命令了: Mail 邮件服务API驱动需要安装guzzlehttp
领取专属 10元无门槛券
手把手带您无忧上云