婷婷综合国产,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框架實現定時發布任務的方法的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 华池县| 澄城县| 郑州市| 嫩江县| 广平县| 富源县| 乌兰县| 夏河县| 水富县| 兰溪市| 海兴县| 上思县| 尚志市| 弥渡县| 土默特右旗| 宁安市| 阿克苏市| 尉氏县| 泰顺县| 青川县| 肥乡县| 平顶山市| 遵义县| 泰宁县| 慈利县| 邵东县| 扬州市| 平潭县| 松原市| 九寨沟县| 广饶县| 黑龙江省| 治多县| 双桥区| 白朗县| 抚州市| 尼木县| 玛曲县| 汉寿县| 郴州市| 怀安县|