laravel artisan 后台运行_3分钟短文:Laravel用户自定义命令行简明教程
引言
完成一個(gè)功能需求,有時(shí)候并不需要一個(gè)界面UI,比如定時(shí)任務(wù),后臺(tái)任務(wù), 對(duì)于這類任務(wù)往往比較耗時(shí),在一個(gè)web頁(yè)面生命周期內(nèi),要拖的很久。這時(shí)候我們 需要將其放在后臺(tái)交給操作系統(tǒng)執(zhí)行。
本期說(shuō)一說(shuō)laravel中,自建命令行的簡(jiǎn)要方法。
代碼時(shí)間
在laravel中命令行被稱作Artisan類,你可以很輕松地使用自帶的腳手架創(chuàng)建一個(gè)命令行文件。 我們使用歡迎新用戶這樣的一個(gè)假設(shè)需求做示例:
php artisan make:console WelcomeNewUsers --command=email:newusers這樣就會(huì)在目錄 app/Console/Commands/ 下創(chuàng)建一個(gè) WelcomeNewUsers.php 文件。 我們來(lái)看一下這個(gè)文件長(zhǎng)啥樣。首先是頭部的命名空間,和類引用:
namespace AppConsoleCommands; use IlluminateConsoleCommand;然后是類的內(nèi)容:
class WelcomeNewUsers extends Command {protected $signature = 'email:newusers';protected $description = 'Command description';public function __construct(){parent::__construct();}public function handle(){//} }為了演示,我們把注釋都給去掉了。其中 $signarute 就是命令行中 --command 所聲明的形式。 屬性 $description 是命令的描述。
我們的業(yè)務(wù)邏輯,在 handle() 方法內(nèi)實(shí)現(xiàn)就可以了。
要讓這個(gè)命令行可以調(diào)用,需要手動(dòng)注冊(cè),在 app/Console/Kernel.php 文件的添加如下內(nèi)容:
protected $commands = [AppConsoleCommandsWelcomeNewUsers::class, ];這樣就可以在應(yīng)用根目錄下,打開(kāi)命令行,輸入以下命令:
php artisan email:newusers因?yàn)闆](méi)有任何邏輯代碼,執(zhí)行會(huì)順利結(jié)束,且沒(méi)有任何提示信息。 現(xiàn)在我們給 handle 方法內(nèi)添加一些業(yè)務(wù)邏輯代碼:
User::signedUpThisWeek()->each(function ($user) {Mail::send('emails.welcome',['name' => $user->name],function ($m) use ($user) {$m->to($user->email)->subject('Welcome!');}); });注意上面的代碼,我們默認(rèn)省略了一些語(yǔ)法糖。首先是一個(gè)User模型的本地作用域,
public funciton scopeSignedUpThisWeek($query) {return $query->where('signed_at', '>=', Carbon::now()->startOfWeek()); }另外還有一個(gè)類和方法 Mail::send() 是用于郵件發(fā)送的,我們?cè)谄渌僮鼋榻B。
經(jīng)過(guò)上面的代碼,我們每次調(diào)用
php artisan email:newusers的時(shí)候,都會(huì)把數(shù)據(jù)庫(kù)中本周注冊(cè)的新用戶拉取出來(lái),挨個(gè)發(fā)送email。
寫(xiě)在最后
本文通過(guò)演示為新用戶發(fā)送郵件的需求,使用命令行創(chuàng)建文件, 并在命令行處理方法內(nèi)書(shū)寫(xiě)邏輯代碼。為大家演示了laravel命令行最初步的用法。 通常我們?cè)诿钚兄袝?huì)有參數(shù)傳遞,也極為常見(jiàn),下文我們?yōu)榇蠹已菔尽?/p>
Happy coding :-)
我是@程序員小助手,持續(xù)分享編程知識(shí),歡迎關(guān)注。總結(jié)
以上是生活随笔為你收集整理的laravel artisan 后台运行_3分钟短文:Laravel用户自定义命令行简明教程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: html2canvas截图页面中某块区域
- 下一篇: fputc会覆盖吗_墨粉寿命和打印的文件