日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

大家好,我是小蝸牛,今天給大家分享一下,如何用Thinkphp5.1.*版本實現定時任務,

例如凌晨12點更新數據、每隔10秒檢測過期會員、每隔幾分鐘發送請求保證ip的活性等

本次分享,主要用到一個名為EasyTask的擴展。

那么什么是EasyTask呢?又怎么安裝呢?

什么是EasyTask

EasyTask是一款簡單易用的PHP常駐內存定時器,可以用它來完成重復運行的任務(如訂單超時自動取消,短信郵件異步推送,隊列/消費者/頻道訂閱者等等),甚至處理Crontab計劃任務(如每天凌晨1點-3點同步DB數據,每月1號生成月度統一報表,每晚10點重啟Nginx服務器等等),工具包同時支持windows、linux、mac環境運行。與之相似的還有Workman等工具。

這里是EasyTask的官方文檔地址:https://gitee.com/392223903/EasyTask

如何安裝EasyTask(這里以Thinkphp框架為例)

首先進入你的thinkphp目錄下,使用composer進行安裝,使用如下指令:

composer require easy-task/easy-tas

如何使用EasyTask

關于如何使用EasyTask這個組件,需要配合thinkphp中的創建自定義指令功能。

當你安裝好EasyTask后(這里默認你已經安裝好,如果安裝過程中出現問題,請根據代碼提示搜索解決方案)

1、在thinkphp框架中創建一個自定義命令類文件,這里我新增的是一個名為Task.php的文件,路徑是:Application/common/command/Task.php

ThinkPHP框架——實現定時任務,定時更新、清理數據

創建自定義命令類文件

2、Task.php中的代碼:

<?php

namespace appcommoncommand;

use thinkconsoleCommand;

use thinkconsoleInput;

use thinkconsoleinputArgument;

use thinkconsoleOutput;

use appapiutilsNews;

class Task extends Command

{

// 配置

protected function configure()

{

//設置名稱為task

$this->setName('task')

//增加一個命令參數,用于獲取輸入操控參數

->addArgument('action', Argument::OPTIONAL, "action")

->addArgument('force', Argument::OPTIONAL, "force");

}

// 執行邏輯

protected function execute(Input $input, Output $output)

{

//獲取輸入參數

$action = trim($input->getArgument('action'));

$force = trim($input->getArgument('force'));

// 配置任務

// 創建EasyTask對象

$task = new EasyTaskTask();

// 設置記錄運行時目錄(日志或緩存目錄)

$task->setRunTimePath('./runtime/viplog/');

// 設置常駐內存

$task->setDaemon(true);

// 添加類的方法類型定時任務(同時支持靜態方法)(開啟1個進程,每隔10秒執行1次)

// 還有其余用法,歡迎查看官方文檔,根據官方文檔自定義方法

// 這里我設置每6小時執行一下News類中的upNews方法。

$task->addClass(News::class, 'upNews','upnews' ,21600, 1);

 

// 根據命令執行

if ($action == 'start')

{

$task->start();

}

elseif ($action == 'status')

{

$task->status();

}

elseif ($action == 'stop')

{

$force = ($force == 'force'); //是否強制停止

$task->stop($force);

}

else

{

exit('Command is not exist');

}

}

}

3、配置application/command.php文件

<?php

return [

'appcommoncommandTask',

];

4、配置完成,接下來就是啟動定時任務,讓其常駐于內存(回到根目錄運行)

// php think 定時任務名 動作

啟動任務: php think task start

查詢任務: php think task status

普通關閉: php think task stop

強制關閉: php think task stop force

Ps:由于我使用的是寶塔,會自動禁用某些關鍵函數,根據寶塔提示的禁用函數一個個解封即可。

ThinkPHP框架——實現定時任務,定時更新、清理數據

提示pcntl_fork,解封它

刪除寶塔面板中的禁用函數即可。

ThinkPHP框架——實現定時任務,定時更新、清理數據

寶塔面板,刪除禁用函數

5、運行結果圖

ThinkPHP框架——實現定時任務,定時更新、清理數據

運行成功

運行效果:

從啟動腳本的時間開始,每個6小時,自動運行指定目錄下的類中方法(通過靜態方法調用),這里的方法可以自定義邏輯,主要是如何設定讓它隔一段時間自動運行。

總結

因為第一次使用定時任務,所以采用的是EasyTask這個包,實現定時任務還有很多的解決方案,這里只是給大家提供一個我所使用過的定時任務解決方案。

謝謝大家的閱讀,我是小蝸牛,如果覺得對你有幫助

麻煩請點個贊,點個關注吧~Thanks?(?ω?)?

分享到:
標簽:框架 ThinkPHP
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定