亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.430618.com 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

大家好,我是小蝸牛,今天給大家分享一下,如何用Thinkphp5.1.*版本實(shí)現(xiàn)定時(shí)任務(wù),

例如凌晨12點(diǎn)更新數(shù)據(jù)、每隔10秒檢測(cè)過(guò)期會(huì)員、每隔幾分鐘發(fā)送請(qǐng)求保證ip的活性等

本次分享,主要用到一個(gè)名為EasyTask的擴(kuò)展。

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

什么是EasyTask

EasyTask是一款簡(jiǎn)單易用的PHP常駐內(nèi)存定時(shí)器,可以用它來(lái)完成重復(fù)運(yùn)行的任務(wù)(如訂單超時(shí)自動(dòng)取消,短信郵件異步推送,隊(duì)列/消費(fèi)者/頻道訂閱者等等),甚至處理Crontab計(jì)劃任務(wù)(如每天凌晨1點(diǎn)-3點(diǎn)同步DB數(shù)據(jù),每月1號(hào)生成月度統(tǒng)一報(bào)表,每晚10點(diǎn)重啟Nginx服務(wù)器等等),工具包同時(shí)支持windows、linux、mac環(huán)境運(yùn)行。與之相似的還有Workman等工具。

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

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

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

composer require easy-task/easy-tas

如何使用EasyTask

關(guān)于如何使用EasyTask這個(gè)組件,需要配合thinkphp中的創(chuàng)建自定義指令功能。

當(dāng)你安裝好EasyTask后(這里默認(rèn)你已經(jīng)安裝好,如果安裝過(guò)程中出現(xiàn)問(wèn)題,請(qǐng)根據(jù)代碼提示搜索解決方案)

1、在thinkphp框架中創(chuàng)建一個(gè)自定義命令類文件,這里我新增的是一個(gè)名為T(mén)ask.php的文件,路徑是:Application/common/command/Task.php

ThinkPHP框架——實(shí)現(xiàn)定時(shí)任務(wù),定時(shí)更新、清理數(shù)據(jù)

創(chuàng)建自定義命令類文件

2、Task.php中的代碼:

<?php

namespace appcommoncommand;

use thinkconsoleCommand;

use thinkconsoleInput;

use thinkconsoleinputArgument;

use thinkconsoleOutput;

use appapiutilsNews;

class Task extends Command

{

// 配置

protected function configure()

{

//設(shè)置名稱為task

$this->setName('task')

//增加一個(gè)命令參數(shù),用于獲取輸入操控參數(shù)

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

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

}

// 執(zhí)行邏輯

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

{

//獲取輸入?yún)?shù)

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

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

// 配置任務(wù)

// 創(chuàng)建EasyTask對(duì)象

$task = new EasyTaskTask();

// 設(shè)置記錄運(yùn)行時(shí)目錄(日志或緩存目錄)

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

// 設(shè)置常駐內(nèi)存

$task->setDaemon(true);

// 添加類的方法類型定時(shí)任務(wù)(同時(shí)支持靜態(tài)方法)(開(kāi)啟1個(gè)進(jìn)程,每隔10秒執(zhí)行1次)

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

// 這里我設(shè)置每6小時(shí)執(zhí)行一下News類中的upNews方法。

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

 

// 根據(jù)命令執(zhí)行

if ($action == 'start')

{

$task->start();

}

elseif ($action == 'status')

{

$task->status();

}

elseif ($action == 'stop')

{

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

$task->stop($force);

}

else

{

exit('Command is not exist');

}

}

}

3、配置application/command.php文件

<?php

return [

'appcommoncommandTask',

];

4、配置完成,接下來(lái)就是啟動(dòng)定時(shí)任務(wù),讓其常駐于內(nèi)存(回到根目錄運(yùn)行)

// php think 定時(shí)任務(wù)名 動(dòng)作

啟動(dòng)任務(wù): php think task start

查詢?nèi)蝿?wù): php think task status

普通關(guān)閉: php think task stop

強(qiáng)制關(guān)閉: php think task stop force

Ps:由于我使用的是寶塔,會(huì)自動(dòng)禁用某些關(guān)鍵函數(shù),根據(jù)寶塔提示的禁用函數(shù)一個(gè)個(gè)解封即可。

ThinkPHP框架——實(shí)現(xiàn)定時(shí)任務(wù),定時(shí)更新、清理數(shù)據(jù)

提示pcntl_fork,解封它

刪除寶塔面板中的禁用函數(shù)即可。

ThinkPHP框架——實(shí)現(xiàn)定時(shí)任務(wù),定時(shí)更新、清理數(shù)據(jù)

寶塔面板,刪除禁用函數(shù)

5、運(yùn)行結(jié)果圖

ThinkPHP框架——實(shí)現(xiàn)定時(shí)任務(wù),定時(shí)更新、清理數(shù)據(jù)

運(yùn)行成功

運(yùn)行效果:

從啟動(dòng)腳本的時(shí)間開(kāi)始,每個(gè)6小時(shí),自動(dòng)運(yùn)行指定目錄下的類中方法(通過(guò)靜態(tài)方法調(diào)用),這里的方法可以自定義邏輯,主要是如何設(shè)定讓它隔一段時(shí)間自動(dòng)運(yùn)行。

總結(jié)

因?yàn)榈谝淮问褂枚〞r(shí)任務(wù),所以采用的是EasyTask這個(gè)包,實(shí)現(xiàn)定時(shí)任務(wù)還有很多的解決方案,這里只是給大家提供一個(gè)我所使用過(guò)的定時(shí)任務(wù)解決方案。

謝謝大家的閱讀,我是小蝸牛,如果覺(jué)得對(duì)你有幫助

麻煩請(qǐng)點(diǎn)個(gè)贊,點(diǎn)個(gè)關(guān)注吧~Thanks?(?ω?)?

分享到:
標(biāo)簽:框架 ThinkPHP
用戶無(wú)頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過(guò)答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫(kù),初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定