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