欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

關于laravel5.5的定時任務詳解(demo)

 更新時間:2019年10月23日 14:58:05   作者:鐵柱同學  
今天小編就為大家分享一篇關于laravel5.5的定時任務詳解(demo),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

一、準備環(huán)境

服務器:linux(debian)+nginx+mysql+php 環(huán)境

框架:laravel 5.5 (確認能跑通)

需求:每天晚上1點執(zhí)行定時操作

二、定時任務的步驟

1、根據(jù)文檔,創(chuàng)建命令

首先進入到laravel/app/console 目錄下,Console 目錄包含應用所有自定義的 Artisan 命令,這些命令類可以使用 make:command 命令生成。該目錄下還有 Console/Kernel 類,在這里可以注冊自定義的 Artisan 命令以及定義調度任務。

例如我們創(chuàng)建一個定時任務,名稱為Test:

//這里使用laravel給定的 php artisan來生成命令,此處的Test就是我們要生成的文件
//這里的artisan代表的不僅僅是laravel自帶的命令,他其實是laravel下的artisan目錄,因為這個目錄沒有x,也就是可執(zhí)行權限,所以不能使用 ./artisan 來執(zhí)行,只能通過php來執(zhí)行
php artisan make:command Test

2、創(chuàng)建完之后,打開console目錄下的commands目錄,我們會發(fā)現(xiàn)里面已經(jīng)有了一個文件

大致的代碼如下:

<?php

namespace App\Console\Commands;

use App\Services\CalculateDataService;
use Illuminate\Console\Command;

class Test extends Command
{
 //此處代表laravel自動生成的名稱,下面執(zhí)行的時候能用到
 protected $signature = 'test:data';

 //此處代表的是描述,并沒有什么用的
 protected $description = 'test data';

 /**
 * 計算數(shù)據(jù)服務的 service 屬性
 *這里由于要用到我們的邏輯,所以提前定義一下,方便下面使用
 * @var CalculateDataService
 */
 protected $service;

 //這個是laravel自帶的構造方法。初始狀態(tài)下是空的。
 //我這里由于要調用CalculateDataService 類的一個方法,所有就用依賴注入的方式引入了一下。
 public function __construct(CalculateDataService $service)
 {
 parent::__construct();

 $this->service = $service;
 }

 /**
 * Execute the console command.
 *這里就是我們執(zhí)行操作的地方,里面是command要處理的業(yè)務。根據(jù)我們的需求,
 *調用類中的calculateData()方法,該方法是我們自己的需求邏輯部分。
 * @return mixed
 */
 public function handle()
 {
 try {
  $this->service->calculateData();
 } catch (\Exception $e) {
  $this->error($e->getMessage());
 }
 // line()方法是command類中自帶的方法,可以輸出我們自定義的信息
 $this->line('calculate Data Success!');
 }
}

3、定時命令創(chuàng)建好之后,我們需要修改kernel.php文件

kernel.php文件里面,主要是定義命令的調度時間,定義命令的執(zhí)行先后順序等。

這部分參考laravel官方文檔:

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

4、我的kernel.php文件

<?php
//此處省略了命名空間部分
class Kernel extends ConsoleKernel
{
 /**
 * The Artisan commands provided by your application.
 *注:此處是引入我們新創(chuàng)建的類。由于我們此處是使用命令名來操作的,所以沒用上這個類名。不過還是引入比較標準
 * 可以使用 command 方法通過命令名或類來調度一個 Artisan 命令:
 * $schedule->command('emails:send --force')->daily();
 * $schedule->command(EmailsCommand::class, ['--force'])->daily();
 *
 * @var array
 */
 protected $commands = [
 Test::class,
 CalculateData::class,
 UpdateOffset::class,
 ];

 /**
 * Define the application's command schedule.
 * 注:
 * 1、這個方法按照自己的需求,確定定時方法的執(zhí)行順序。通過after,before等關鍵詞來控制
 * 2、此處相當于規(guī)定同意的定時執(zhí)行時間,如都在0:30分執(zhí)行下面的幾個定時任務
 * @param \Illuminate\Console\Scheduling\Schedule $schedule
 * @return void
 */
 protected function schedule(Schedule $schedule)
 {
 // 每天凌晨 0.45 執(zhí)行同步 aliyun 數(shù)據(jù)的任務,并發(fā)送郵件給 ***
  $schedule->command('iot:sync Flow')
  ->after(function() {
   //更新偏移量,after里面不能加參數(shù)
  Artisan::call('Test:data');
  })
  ->after(function () {
  // 執(zhí)行同步數(shù)據(jù)命令完成后 則執(zhí)行計算數(shù)據(jù)任務
  Artisan::call('calculate:data');
  });
 }

 /**
 * Register the commands for the application.
 * //這個部分是laravel自動生成的,引入我們生成的命令文件
 * @return void
 */
 protected function commands()
 {
 $this->load(__DIR__.'/Commands');

 require base_path('routes/console.php');
 }
}

關于具體的調度方法schedule(),大家可以去laravel文檔看看,里面可以規(guī)定很多東西。我這邊是使用的鉤子函數(shù)。在同時要執(zhí)行多個定時任務的時候,通過after,before等方法,可以讓多個定時任務變得有序起來。

三、執(zhí)行我們的定時

雖然laravel的定時任務一直都說的很強大,但本質上還是離不開服務器上的cron腳本。。

1、先查看服務器上的定時條目

crontab -l

2、新增或編輯cron 條目

crontab -e

3、在里面新增我們寫好的方法路徑

這里面新加上我們的定時任務。

第一是 規(guī)定定時任務的執(zhí)行時間

第二是 要把項目的artisan目錄路徑寫對

第三 schedule:run就是執(zhí)行咱們之前寫的任務調度,也就是kernel.php文件中的schedule方法。

如果是大家自己測試的話,可以隨便寫個定時任務,每分鐘執(zhí)行以下,這樣就能準確的知道自己的定時任務是否正確了。

以上這篇關于laravel5.5的定時任務詳解(demo)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • laravel使用Faker數(shù)據(jù)填充的實現(xiàn)方法

    laravel使用Faker數(shù)據(jù)填充的實現(xiàn)方法

    這篇文章主要給大家介紹了關于laravel使用Faker數(shù)據(jù)填充的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用laravel具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-04-04
  • php獲取訪問者IP地址匯總

    php獲取訪問者IP地址匯總

    在很我的時候我們需要得到用戶的真實IP地址,例如,日志記錄,地理定位,將用戶信息,網(wǎng)站數(shù)據(jù)分析等,其實獲取IP地址很簡單$_SERVER[\'REMOTE_ADDR\']就可以了。下面我們就來給大家匯總一下常用的幾種獲取IP地址的方法。
    2015-04-04
  • E路文章系統(tǒng)PHP

    E路文章系統(tǒng)PHP

    這篇文章主要介紹了E路文章系統(tǒng)PHP
    2006-12-12
  • PHP實現(xiàn)登錄驗證碼校驗功能

    PHP實現(xiàn)登錄驗證碼校驗功能

    這篇文章主要為大家詳細介紹了PHP實現(xiàn)驗證碼校驗功能,主要是利用PHP中的 SESSION功能來實現(xiàn),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • 來自經(jīng)典的打造簡單的PHP&MYSQL留言板

    來自經(jīng)典的打造簡單的PHP&MYSQL留言板

    比較簡單易懂的php+mysql留言板 數(shù)據(jù)庫結構:(庫名:lyb)
    2008-03-03
  • ThinkPHP緩存方法S()概述

    ThinkPHP緩存方法S()概述

    thinkPHP的F方法只能用于緩存簡單數(shù)據(jù)類型,不支持有效期。S()緩存方法支持有效期,又稱動態(tài)緩存方法,這篇文章主要介紹了ThinkPHP緩存方法S(),需要的朋友可以參考下
    2014-06-06
  • 純PHP代碼實現(xiàn)支付寶批量付款

    純PHP代碼實現(xiàn)支付寶批量付款

    最近在做一個使用支付寶轉賬的項目,其中有需求把我難到了:批量支付成功后不知道怎么接收系統(tǒng)返回的通知,經(jīng)過朋友幫忙,此功能實現(xiàn),下面小編把具體代碼整理分享給大家,供大家參考
    2015-12-12
  • php從數(shù)據(jù)庫中讀取特定的行(實例)

    php從數(shù)據(jù)庫中讀取特定的行(實例)

    下面小編就為大家?guī)硪黄猵hp從數(shù)據(jù)庫中讀取特定的行(實例)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • php實現(xiàn)微信企業(yè)轉賬功能

    php實現(xiàn)微信企業(yè)轉賬功能

    這篇文章主要為大家詳細介紹了php實現(xiàn)微信企業(yè)轉賬功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • yii 框架實現(xiàn)按天,月,年,自定義時間段統(tǒng)計數(shù)據(jù)的方法分析

    yii 框架實現(xiàn)按天,月,年,自定義時間段統(tǒng)計數(shù)據(jù)的方法分析

    這篇文章主要介紹了yii 框架實現(xiàn)按天,月,年,自定義時間段統(tǒng)計數(shù)據(jù)的方法,結合實例形式分析了yii基于自定義時間段統(tǒng)計數(shù)據(jù)的相關操作技巧與使用注意事項,需要的朋友可以參考下
    2020-04-04

最新評論