婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Laravel框架實現定時發布任務的方法

Laravel框架實現定時發布任務的方法

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

本文實例講述了Laravel框架實現定時發布任務的方法。分享給大家供大家參考,具體如下:

背景:需要每隔一小時新建一個任務

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

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

1、利用Linux的cronTab功能

(1)進入Linux服務器環境,命令行輸入

crontab -e

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

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

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

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

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

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

php artisan make:command SendTask

然后發現在app/Console/Commands路徑下多了一個SendTask.php的文件

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

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

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

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

schedule里面是定時執行的核心代碼:可以自己直接在里面寫要執行的任務的內容,也可以調用新建的command里的任務執行內容。后面就是說明執行任務的頻次。

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

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

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

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

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

更多關于Laravel相關內容感興趣的讀者可查看本站專題:《Laravel框架入門與進階教程》、《php優秀開發框架總結》、《php面向對象程序設計入門教程》、《php+mysql數據庫操作入門教程》及《php常見數據庫操作技巧匯總》

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

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

標簽:太原 綏化 衡陽 鄂州 白銀 辛集 廊坊 崇左

巨人網絡通訊聲明:本文標題《Laravel框架實現定時發布任務的方法》,本文關鍵詞  Laravel,框架,實現,定時,發布,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Laravel框架實現定時發布任務的方法》相關的同類信息!
  • 本頁收集關于Laravel框架實現定時發布任務的方法的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 来凤县| 华容县| 即墨市| 庆安县| 都昌县| 淳安县| 牡丹江市| 沅江市| 平昌县| 远安县| 桐城市| 陆丰市| 黄浦区| 永川市| 乌鲁木齐市| 海晏县| 大余县| 武邑县| 循化| 银川市| 大渡口区| 鸡东县| 榕江县| 舒城县| 深水埗区| 十堰市| 上蔡县| 晋州市| 徐州市| 行唐县| 从江县| 岑巩县| 昌宁县| 图木舒克市| 扬州市| 台湾省| 交口县| 横山县| 米脂县| 浮梁县| 鄂温|