今天小編給大家分享一下怎么在Laravel應(yīng)用程序中使用任務(wù)調(diào)度的相關(guān)知識(shí)點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識(shí),所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來(lái)了解一下吧。
公司主營(yíng)業(yè)務(wù):成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)、移動(dòng)網(wǎng)站開(kāi)發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。創(chuàng)新互聯(lián)是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開(kāi)放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來(lái)的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來(lái)驚喜。創(chuàng)新互聯(lián)推出石林免費(fèi)做網(wǎng)站回饋大家。
什么是任務(wù)調(diào)度
任務(wù)調(diào)度是指按計(jì)劃執(zhí)行一些指定任務(wù)的技術(shù)。例如,每小時(shí)備份數(shù)據(jù)庫(kù)或每天發(fā)送報(bào)告。在Laravel中,任務(wù)調(diào)度與Cron Tabs類似,但更容易實(shí)現(xiàn)和管理。
Laravel中的任務(wù)調(diào)度器使用Artisan命令行工具來(lái)管理調(diào)度,其中包括CRON套接字和Powershell。
在Laravel中實(shí)現(xiàn)任務(wù)調(diào)度
第一步——?jiǎng)?chuàng)建任務(wù)
創(chuàng)建任務(wù)是實(shí)現(xiàn)任務(wù)調(diào)度的第一步。Laravel中的可調(diào)度任務(wù)以類的形式呈現(xiàn)。通過(guò)定義要執(zhí)行的邏輯,將任務(wù)轉(zhuǎn)換為類可以更好地管理和測(cè)試。讓我們創(chuàng)建一個(gè)示例任務(wù)TutorialTask
:
這個(gè)任務(wù)邏輯很簡(jiǎn)單,每分鐘記錄一條信息到日志中。現(xiàn)在,我們已經(jīng)創(chuàng)建了一個(gè)任務(wù),但它不會(huì)自動(dòng)執(zhí)行。我們需要為它設(shè)置調(diào)度。
第二步——在控制臺(tái)中設(shè)置調(diào)度
Laravel提供了許多可以將任務(wù)添加到調(diào)度中的方法。在這里,我們使用schedule
方法在控制臺(tái)中設(shè)置調(diào)度。
$schedule->job(new TutorialTask)->everyMinute();
everyMinute
方法表示這個(gè)任務(wù)每分鐘都會(huì)執(zhí)行。您可以使用其他預(yù)定義的方法,如每小時(shí)(hourly
)、每天(daily
)、每月(monthly
)或每周(weekly
)。
或者,您可以定義我們自己的頻率規(guī)則:
$schedule->job(new TutorialTask)->everyFiveMinutes();
這個(gè)規(guī)則指定任務(wù)應(yīng)該每五分鐘運(yùn)行一次。
第三步——啟動(dòng)任務(wù)調(diào)度器
現(xiàn)在我們已經(jīng)為任務(wù)設(shè)置了調(diào)度,接下來(lái)我們需要啟動(dòng)任務(wù)調(diào)度器。我們可以在服務(wù)器上運(yùn)行調(diào)度器,也可以使用Laravel自帶的計(jì)劃調(diào)度器,它是通過(guò)設(shè)置Cron Tab來(lái)運(yùn)行的。
在控制臺(tái)中運(yùn)行以下命令:
* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1
這個(gè)命令將每分鐘運(yùn)行一次Laravel的調(diào)度器。您需要將/path-to-your-project
替換為您的Laravel應(yīng)用程序的路徑。>> /dev/null
指示將所有輸出轉(zhuǎn)發(fā)到/dev/null
中。
最后一步——啟動(dòng)隊(duì)列(如果需要)
如果您的應(yīng)用程序使用隊(duì)列,則需要啟用隊(duì)列調(diào)度器。Laravel使用redis或Beanstalkd等后端驅(qū)動(dòng)程序來(lái)處理隊(duì)列任務(wù)。您需要按照以下步驟啟用隊(duì)列調(diào)度器:
在.env
文件中定義QUEUE_DRIVER
:
QUEUE_DRIVER=redis
在config/queue.php
中設(shè)置隊(duì)列連接:
'default' => env('QUEUE_DRIVER', 'redis'),
'connections' => [
.....
'redis' => [
'driver' => 'redis',
'connection' => 'your-default-redis-connection',
'queue' => env('REDIS_QUEUE', 'default'),
'retry_after' => 90,
],
.....
]
修改.env
文件來(lái)指定隊(duì)列連接:
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
REDIS_QUEUE=default
現(xiàn)在啟動(dòng)隊(duì)列調(diào)度器:
php artisan queue:work redis --daemon
這個(gè)命令將開(kāi)啟隊(duì)列調(diào)度器,并開(kāi)始執(zhí)行任務(wù)。
以上就是“怎么在Laravel應(yīng)用程序中使用任務(wù)調(diào)度”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會(huì)為大家更新不同的知識(shí),如果還想學(xué)習(xí)更多的知識(shí),請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。