,在 Laravel 中,我们可以通过三种工具实现命令行交互: Artisan:Laravel 内置的命令行操作工具集,支持自定义命令; Tinker:一个由 PsySH 扩展包驱动的 REPL,允许你通过命令行与整个...我们在执行 php artisan 命令时,artisan 就指的是根目录下的 artisan 文件,所以命令需要在应用根目录下执行,然后 artisan 之后的部门都是作为请求参数被控制台应用获取并处理...dump server 收集 dump 信息 preset:切换应用前端框架脚手架代码,比如从 Vue 切换到 React 选项 在我们继续介绍 Artisan 命令其它内容之前,我们先来看一下在运行...命令 介绍完系统内置的所有命令之后,我们接下来看看如何编写自定义的 Artisan 命令,这种需求在实际项目开发中还是常有的,比如数据迁移、数据修复、定时任务等。...至此,你应该对 Artisan 命令的使用和编写有了一个初步的概念,下一篇我们将介绍如何通过命令类编写更加复杂的交互命令。
默认提供的脚本 在当前的框架目录中,我们在根目录执行 php artisan ,就可以看到命令行的帮助信息,这里就列出了所有已经存在的命令行脚本。第一篇文章中,我们就接触过这其中的两个命令。...自定义一个脚本 自定义一个脚本非常简单。我们可以使用 make:command 命令来生成一个命令行脚本。...handle() 函数中,我们可以编写当前这个脚本需要执行的功能代码。...之后在我们的执行代码中,也就是 Command 的 handle() 方法中使用 argument() 或者 option() 获取到的就是这个 input 中的数据。...中执行 execute() 方法,通过回调的方式调用我们自定义的那个 handle() 方法。
只需要在命令前面加上 help 即可查看命令帮助界面: php artisan help migrate 编写命令# 除 Artisan 提供的命令之外,还可以构建自己的自定义命令。...命令默认存储在app/Console/Commands 目录,你也可以修改 composer.json 文件来指定你想要存放的目录。...不必担心应用中不存在这个目录,因为它会在你第一次运行 Artisan 命令 make:command 时创建。...执行命令时会调用 handle 方法,你可以在这个方法中放置命令逻辑。 修改生成的文件 如下: argument('name')); } } } 修改完代码 执行php artisan list查看当前命令是否生成 接着运行php artisan HelloWorld
你可能还留意到在原本应该是路由过滤器的地方,变成了对 Middleware 的引用。 实际上给 Laravel 应用添加自定义的 Middleware 在以前的版本中就有了。...每个特定的中间层都可以在应用逻辑之前、之后进行处理,或者同时在应用逻辑之前和之后进行处理。...通过执行 artisan 命令: $ php artisan make:middleware MyMiddleware 这条命令会生成一个简单的 middleware 文件,代码如下: namespace...在 $middleware 中的 middleware 会在每次请求时运行,而 $routeMiddleware 中的 middleware 必须被启用才会运行。...而 "after" middleware 是先调用 $next() 方法让请求被堆栈处理,之后再对它执行操作。 写在最后 如果你还不熟悉 middleware, 你的大脑可能会被它的概念纠缠一会儿。
现在让我们将这个命令通过使用 artisan 命令进行封装,使其更易于运行和可加入计划任务。...这意味着,一旦有参数被修改,我们不需要通过命令本身进行调整。接下来,我们可以来创建这个控制台命令。 通过运行 php artisan make:comman 命令来创建一个自定义命令。...我们将 shell 命令和所需的参数传入到 sprintf() 函数中,它会将占位符替换成实际的参数。在处理完 process 实例后,我们可以进行下一步 handle)( 方法的处理。...在 handle 方法里,我们有个一 try-catch 代码块。...若要运行这个调度器,我们需要执行 php artisan schedule:run 命令,然后它会触发所有需要运行的命令。这很棒,我们仅需一行命令就可以在指定的时间触发对应的任意命令。
其任务指令格式如下: 命令行crontab -e进入crontab编辑,把自己要执行的指令编辑好之后保存退出即可生效。...也就是说必须要等到Task 1执行完成之后,Task 2才会开始执行。在这种情况下,如果Task 1非常耗时,则会影响到Task 2的按时执行,这一点在开发中是尤其需要注意的。...something*/}) // 后置钩子,命令执行完之后执行此回调 ->runInBackground(); // 后台运行本命令 // 每分钟执行command命令:php artisan...不过在任务改为后台执行之后,又有了一个新的问题,即如何触发任务的后置钩子函数。因为后置钩子函数是需要在任务跑完之后立即执行,所以必须要有办法监测到后台运行的任务结束的一瞬间。...代码如下: // Illuminate/Console/Scheduling/ScheduleFinishCommand.php // php artisan schedule:finish指令的源代码
1.用database队列驱动,生成创建这些表的迁移 php artisan queue:table php artisan migrate 用redis 队列驱动需要在配置文件 config/database.php...中配置 Redis 数据库连接 2.生成任务类 php artisan make:job SendToStarterMail 生成之后,在handle方法中处理发送邮件 <?...make:command SendStarterEmail 就会在app/Console/Commands下生成一个SendStarterEmail.php文件,进入这个文件,自定义指令名: protected...5.运行队列监听服务 php artisan queue:work database --queue=emails #database为对接驱动,emails为队列名称,可自定义 正式环境请配置在supervisor...dev/null 2>&1 测试环境,可运行以下代替: php artisan schedule:run 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/111733
自定义布隆过滤器参数 实际使用时,如果需要的话,可以通过在 bf.add 之前执行 bf.reserve 指令自定义布隆过滤器的参数,这个指令支持三个参数: key:指定键名; error_rate:错误率...如果结果集为空,你可以继续运行数据库填充命令,或者手动设置一些重复记录。...命令类代码如下: <?...运行 sail artisan start:crawl 推送任务到队列,这个时候可以看到 Processed 日志输出,表明布隆过滤器已经介入并进行了去重操作,运行完成后,通过如下命令启动队列处理器进程消费队列...对于爬虫而言,这个误差率还是有点高的,你可以参考上面介绍的自定义配置对参数进行调优,再看看误差率是否得到了优化。
首先进入到laravel/app/console 目录下,Console 目录包含应用所有自定义的 Artisan 命令,这些命令类可以使用 make:command 命令生成。...该目录下还有 Console/Kernel 类,在这里可以注册自定义的 Artisan 命令以及定义调度任务。.../artisan 来执行,只能通过php来执行 php artisan make:command Test 2、创建完之后,打开console目录下的commands目录,我们会发现里面已经有了一个文件...大致的代码如下: <?...; } } 3、定时命令创建好之后,我们需要修改kernel.php文件 kernel.php文件里面,主要是定义命令的调度时间,定义命令的执行先后顺序等。
实现了一个简单的命令行,和一个复杂的发送邮件通知的功能。 可是细心的读者你发现了没有,使用自定义的命令行,全程我们没有输入一个参数,没有一个数据,这,这,这,太不寻常了吧!...事前询问 首先我们要区分获取参数的两种方式,一种是在输入命令行时直接给定的,还有一种是在程序运行过程中,等待用户输入信息之后才能继续。...}'; 假设上述类已经完成功能开发,在命令行中调用: php artisan password:reset 5 在代码中使用 $this->argument() 方法,打印其结果是一个数组,内容如下:.../ 所有选项 $options = $this->option(); $sendEmail = $this->option('sendEmail'); } 事中确认 有些参数是要在程序运行中对用户进行询问...在设计命令行的时候一定要想清楚,规划好,到底用哪一个,在代码中才能有的放矢地读取。并且使用询问等待可以制作更多灵活的引导型程序,非常实用。
使用databases为例 为了使用database 队列驱动,需要一张数据库表来存放任务,要生成创建该表的迁移,运行 Artisan 命令queue:table ,迁移被创建好了之后,使用migrate...命令运行迁移: php artisan queue:table php artisan migrate 安装依赖包 项目根目录可安装如下依赖包 下面是以上列出队列驱动需要安装的依赖: • Amazon...该命令将会在app/Jobs 目录下生成一个新的类,并且该类实现了Illuminate\Contracts\Queue\ShouldQueue接口 2.SendReminderEmail.php代码如下...相较于queue:listen 命令该命令对 CPU 的使用有明显降低: php artisan queue:work connection --daemon php artisan queue:work...2.如果修改了代码,在后台队列中是无效的,必须重启队列 php artisan queue:restart 这个命令依赖于缓存系统重启进度表,默认情况下,APC 在 CLI 任务中无法正常工作,如果你在使用
,进入代码所在文件夹,将文件.env.example 改为.env,执行以下命令生成key php artisan key:generate 第三步 启动页面 php artisan serve...7 make:rule 自定义验证 例如 自定义一个规则叫PhoneValidate php artisan make:rule PhoneValidate 命令执行完成后就可以在app/Rules/目录下看到新生成的...在app/Providers/AppServiceProvider.php文件中可以自定义blade标签。示例代码如下 ? 前端页面代码 ?...命令 在以前的 laravel 版本中,我们自己创建 Artisan 命令的时候需要到 Kernel 文件中注册命令才可以生效,而在 5.5 的时候,Laravel 通过 load 的方法实现,直接就在生成命令之后可以使用命令了...创建一个自定义命令 SayHello php artisan make:command SayHello 对应的在app/Console/Commands文件夹下会生成一个SayHello.php文件
类似的,在命令类中可以通过 public function handle() { $this->info('欢迎来自' . $this->option('city') . '的' ....; } 这样,我们运行 php artisan welcome:message,带上参数和选项信息,就可以输出对应的欢迎信息了: 用户交互 除了在命令行运行命令时手动设置参数值和选项值获取输入信息之外...,需要提供表头 headers 和表数据 data,这段代码输出结果如下: 进度条 如果你之前运行过 npm install,就会看到安装过程中有进度条显示安装进度,在 Artisan 命令执行过程中,...在应用代码中调用 Artisan 命令 除了在命令行运行 Artisan 命令之外,还可以在应用代码中通过 Artisan 门面调用它。...你还可以在一个 Artisan 命令类中调用另一个 Artisan 命令,在命令类中调用 Artisan 命令,可以通过 Artisan:call(),也可以直接通过 this->call() 方法,还可以通过
要生成创建这些表的迁移,可以在项目目录下运行 Artisan 命令 queue:table,迁移被创建之后,可以使用 migrate 命令生成这些表: php artisan queue:table php...laravel中 app/Jobs 不存在,在运行 Artisan 命令 make:job 的时候,它将会自动创建。...类似的,队列任务最大运行时长(秒)可以通过 Artisan 命令上的 --timeout 开关来指定: php artisan queue:work --timeout=30 同样,你也可以在任务类中定义该任务允许运行的最大时长...简单处理可以使用 php artisan queue:work --daemon & 10、运行队列监听器 开始进行队列监听 laravel 包含了一个 Artisan 命令来运行推送到队列中的任务的执行...编辑配置文件:找到最后一行,引入自定义配置文件 ;[include] ;files = conf.d/*.ini 去掉[include]和files前面的“;” include生效,在/etc/supervisor
只要在命令前面加上 help 即可显示帮助界面: php artisan help migrate php artisan make:auth 编写命令 ---- 除了使用 Artisan 本身所提供的命令之外...,Laravel 也允许你自定义 Artisan 命令。...自定义命令默认存储在 app/Console/Commands 目录中,当然,只要在 composer.json 文件中的配置了自动加载,你可以自由选择想要放置的地方。...命令运行时 handle 方法会被调用,请将程序逻辑放置在此方法中。 接下来讲解一个发送邮件的例子。 为了更好的代码重用性,还有可读性,建议把处理业务逻辑的代码抽到一个功能类里。...相较于其它知名的 PHP 模板引擎,Blade 并不会限制你必须得在视图中使用 PHP 代码。所有 Blade 视图都会被编译缓存成普通的 PHP 代码,一直到它们被更改为止。
要在 Laravel 中设置定时任务并使用 PM2 进行管理,这是个好想法,以下步骤:在 Laravel 中创建定时任务使用 php artisan make:command 命令创建一个新的 Artisan...命令,该命令将执行您希望在后台运行的代码。...php artisan make:command FetchApiData然后,在新创建的 FetchApiData 命令类的 handle 方法中编写您需要执行的代码。...public function handle(){ // Your code here}接下来,在 App\Console\Kernel.php 文件中注册您的定时任务。...命令,并使 PM2 每分钟运行一次 php artisan schedule:run 命令。
支持TCP长连接,支持Websocket、HTTP等协议,支持自定义协议。拥有异步Mysql、异步Redis、异步Http、MQTT物联网客户端、异步消息队列等众多高性能组件。...安装 gateway-worker composer require workerman/gateway-worker 创建命令启动 workerman服务 php artisan make:command...WorkermanCommand 创建的命令存放在 app\Console\Commands 在WorkermanCommand.php键入如下代码 <?...创建 app/Workerman/Events.php 键入如下代码 <?...message"); } // 连接断开事件 public static function onClose($client_id) { } } 启动workerman 运行命令
内核绑定 跟HTTP内核一样,在应用初始化阶有一个内核绑定的过程,将Console内核注册到应用的服务容器里去,还是引用上一篇文章引用过的 bootstrap/app.php里的代码 <?...shell脚本里可以通过 $0获取脚本文件名, $1 $2这些依次获取后面传递给shell脚本的参数选项)索引0对应的是脚本文件名,接下来依次是命令行里传递给脚本的所有参数选项,所以在命令行里通过 artisan...脚本执行的命令,在 artisan脚本中 $_SERVER['argv']数组里索引0对应的永远是 artisan这个字符串,命令行里后面的参数会依次对应到 $_SERVER['argv']数组后续的元素里...引导应用 在Console内核的 handle方法里我们可以看到和HTTP内核处理请求前使用 bootstrapper程序引用应用一样在开始处理命令任务之前也会有引导应用这一步操作 其父类 「Illuminate...还有就是打开命令类后我们可以看到并没有run方法,我们把处理逻辑都写在了 handle方法中,仔细查看代码会发现 run方法定义在父类中,在 run方法会中会调用子类中定义的 handle方法来完成任务处理
Artisan test 命令 test 命令由 Nuno Maduro 贡献 除了 phpunit命令之外,现在可以使用 test Artisan 命令来运行测试。...此外,运行器将在第一次测试失败时自动停止: php artisan test 可以传递给 phpunit 命令的任何参数也可以传递给 Artisan test 命令: php artisan test...自定义桩代码 自定义桩代码由 Taylor Otwell贡献 Artisan 控制台的 make 命令用于创建各种类,例如控制器,任务,迁移和测试。 这些类是根据输入填充值使用「桩代码」生成文件的。...为此,Laravel 7提供了 stub:publish 命令来发布最常见的自定义桩代码: php artisan stub:publish 发布的桩代码将位于应用程序根目录中的 stubs 目录中。...当使用 Artisan 的 make 命令生成它们的相应类时,对这些桩代码所做的任何更改都会反映出来。
领取专属 10元无门槛券
手把手带您无忧上云