校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > Laravel框架實現(xiàn)定時發(fā)布任務(wù)的方法

Laravel框架實現(xiàn)定時發(fā)布任務(wù)的方法

熱門標(biāo)簽:萍鄉(xiāng)商鋪地圖標(biāo)注 電信外呼系統(tǒng)多少錢一個月 太原400電話申請流程 宿州正規(guī)外呼系統(tǒng)軟件 神龍斗士電話機器人 企業(yè)400電話辦理多少費用 代理打電話機器人 合肥企業(yè)外呼系統(tǒng)線路 桂陽公司如何做地圖標(biāo)注

本文實例講述了Laravel框架實現(xiàn)定時發(fā)布任務(wù)的方法。分享給大家供大家參考,具體如下:

背景:需要每隔一小時新建一個任務(wù)

http://laravelacademy.org/post/8484.html

Laravel官方自帶這個功能,需要利用到Linux系統(tǒng)的cronTab功能。

1、利用Linux的cronTab功能

(1)進入Linux服務(wù)器環(huán)境,命令行輸入

crontab -e

這樣就直接進入了服務(wù)器下的/var/spool/cron/root文件。如果/var/spool/cron/下還沒有root文件,輸入上面那個命令就會自動新建root文件了。

(2)先進入文件編輯模式,在root文件中輸入

復(fù)制代碼 代碼如下:
* * * * * /usr/local/php/bin/php  /opt/xxx/xxx/artisan  schedule:run 1>> /dev/null 2>1

前面第一個目錄是php在服務(wù)器上的位置,如果不清楚,可以命令行輸入which php自行查看然后修改。

第二個目錄是你的laravel項目的存放位置,就是artisan文件所在的根目錄

2、然后在laravel項目目錄下新建任務(wù),命令行輸入

php artisan make:command SendTask

然后發(fā)現(xiàn)在app/Console/Commands路徑下多了一個SendTask.php的文件

自定義這個文件的$signature(等會兒要跟app/Console/Kernel.php文件中的command里面的名稱對應(yīng),比如我寫的是task:send)$description(對這個任務(wù)的描述)handle()方法中是這個定時任務(wù)的主要邏輯代碼。

3、然后修改app/Console/Kernel.php文件

在$commands里要增加剛剛的任務(wù)的存放路徑;要同時執(zhí)行多個任務(wù)時,將要同時執(zhí)行的任務(wù)的class加入到$commands

protected $commands = [
\App\Console\Commands\SendTasks::class,
\App\Console\Commands\SendTaskEveryDay::class,
\App\Console\Commands\SendTaskEveryWeek::class,

schedule里面是定時執(zhí)行的核心代碼:可以自己直接在里面寫要執(zhí)行的任務(wù)的內(nèi)容,也可以調(diào)用新建的command里的任務(wù)執(zhí)行內(nèi)容。后面就是說明執(zhí)行任務(wù)的頻次。

protected function schedule(Schedule $schedule)
{
//  $schedule->call(function () {
//   Task::create(['title' => '發(fā)送定時任務(wù)']);
//  })->everyMinute();
//調(diào)用artisan
// $schedule->command('tasks:send')->hourly();
$schedule->command('tasks:send')->cron('0 */2 * * *');
$schedule->command('tasks:everyday')->dailyAt('09:00');

其實到這里已經(jīng)是可以執(zhí)行發(fā)布定時任務(wù)的期待了,但是我希望可以傳參到這個定時任務(wù)里面去,因為每次的任務(wù)內(nèi)容不一樣,需要達到可以自定義的效果。在這里糾結(jié)了很久,還嘗試了修改handle()方法,修改成為handle($data),然后在要發(fā)布定時任務(wù)的時候調(diào)用這個handle()方法,然后將參數(shù)通過$data傳過來,但是發(fā)現(xiàn)一旦handle()里面帶參數(shù)之后定時任務(wù)就不能執(zhí)行了,具體原因不知道,但是這個思路明顯就是錯了。

最后走了很多彎路,想到一個辦法,不能從外部傳參進去,就在方法里面把參數(shù)查出來。我想要的效果就是:新建一個任務(wù),然后這個新建的任務(wù)需要每隔1小時自動新建一次。

想到的解決辦法就是在handle()方法里面用sql語句或者查詢構(gòu)造器先把新建的那個定時任務(wù)查出來,然后將這個任務(wù)再新增一次。暫時能想到的就是這個辦法,起碼可以達到我想要的效果了。

$cron=Task::where('type', 'xxx')
 ->first();
$cronTab=$cron->jsonSerialize();
$task= Task::create($cronTab);

更多關(guān)于Laravel相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Laravel框架入門與進階教程》、《php優(yōu)秀開發(fā)框架總結(jié)》、《php面向?qū)ο蟪绦蛟O(shè)計入門教程》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總》

希望本文所述對大家基于Laravel框架的PHP程序設(shè)計有所幫助。

您可能感興趣的文章:
  • Laravel實現(xiàn)定時任務(wù)的示例代碼
  • 源碼分析 Laravel 重復(fù)執(zhí)行同一個隊列任務(wù)的原因
  • Laravel中任務(wù)調(diào)度console使用方法小結(jié)
  • Laravel框架數(shù)據(jù)庫CURD操作、連貫操作總結(jié)
  • Laravel框架表單驗證詳解
  • Laravel框架中擴展函數(shù)、擴展自定義類的方法
  • 跟我學(xué)Laravel之快速入門
  • Laravel框架路由配置總結(jié)、設(shè)置技巧大全
  • Laravel中使用FormRequest進行表單驗證方法及問題匯總
  • Laravel框架定時任務(wù)2種實現(xiàn)方式示例

標(biāo)簽:太原 綏化 衡陽 鄂州 白銀 辛集 廊坊 崇左

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Laravel框架實現(xiàn)定時發(fā)布任務(wù)的方法》,本文關(guān)鍵詞  Laravel,框架,實現(xiàn),定時,發(fā)布,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Laravel框架實現(xiàn)定時發(fā)布任務(wù)的方法》相關(guān)的同類信息!
  • 本頁收集關(guān)于Laravel框架實現(xiàn)定時發(fā)布任務(wù)的方法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 甘南县| 沾化县| 若尔盖县| 扎鲁特旗| 霍州市| 呈贡县| 洛南县| 阜南县| 霍林郭勒市| 闸北区| 威海市| 黄山市| 潞城市| 静安区| 新密市| 攀枝花市| 上犹县| 循化| 喀喇沁旗| 永春县| 茂名市| 永福县| 吕梁市| 甘肃省| 大同市| 什邡市| 新建县| 台南市| 凌海市| 甘谷县| 酒泉市| 周口市| 冀州市| 嘉兴市| 汝城县| 桓台县| 松阳县| 平泉县| 夏河县| 申扎县| 潍坊市|