本應(yīng)用是在這位大佬分享的代碼的基礎(chǔ)上 優(yōu)化和完善
讓你的webman實(shí)現(xiàn)類似寶塔一樣管理定時(shí)任務(wù)
大佬的倉庫鏈接:https://github.com/settime/webman-crontab
支持秒級(jí)的定時(shí)任務(wù),任務(wù)類型有 訪問外部鏈接,執(zhí)行PHP代碼,以及sheel腳本,(因?yàn)楸旧聿粫?huì)寫sheel腳本,所以這部分我并沒有測(cè)試,php代碼是可以直接寫某個(gè)靜態(tài)類的調(diào)用方式)
每個(gè)定時(shí)任務(wù)都會(huì)啟動(dòng)一個(gè)定時(shí)器,定時(shí)器之間是同步調(diào)用,如果其中一個(gè)任務(wù)的 執(zhí)行時(shí)間過長,將會(huì)導(dǎo)致整個(gè)進(jìn)程的阻塞,其他任務(wù)均會(huì)延后調(diào)用(如果任務(wù)耗時(shí)長,任務(wù)間隔時(shí)間又過快,會(huì)將進(jìn)程徹底堵塞,切記?。?/strong>
本應(yīng)用會(huì)自動(dòng)安裝2個(gè)數(shù)據(jù)表 cms_crontab,cms_crontab_log
PHP版本 >= 7.2 ,已經(jīng)在win 系統(tǒng)測(cè)試過 7.2和8.0 運(yùn)行均良好
請(qǐng)先安裝好webman-admin,可在后臺(tái)插件中心完成本應(yīng)用的安裝
然后下載本插件 放入 根目錄\plugin 中,
然后 首先執(zhí)行下載下方的依賴
// 最后運(yùn)行命令 完成插件的安裝
php webman app-plugin:install tuCrontabs
# 定時(shí)任務(wù)程序
composer require workerman/crontab
# redis相關(guān)包
composer require webman/redis-queue illuminate/redis
# 業(yè)務(wù)鎖
composer require webman-tech/symfony-lock
# env組件
composer require vlucas/phpdotenv
完成以上安裝后,您需要重啟一下應(yīng)用,然后在后臺(tái),您可以在【通用設(shè)置】-【定時(shí)任務(wù)】中看到安裝好的應(yīng)用了
您可以執(zhí)行下方SQL語句,導(dǎo)入示例任務(wù)計(jì)劃(這個(gè)并非必須的,可以在后臺(tái)手動(dòng)添加即可)
-- ----------------------------
-- Records of cms_crontab
-- ----------------------------
INSERT INTO `cms_crontab` VALUES (2, '執(zhí)行php方法', 2, 5, '{\"month\":null,\"week\":null,\"day\":null,\"hour\":null,\"minute\":null,\"second\":\"5\"}', '*/5 * * * * *', 'return 123;', 1611, 1713763995, 0, 0, 0, 1);
INSERT INTO `cms_crontab` VALUES (3, '調(diào)用php類靜態(tài)方法', 2, 5, '{\"month\":null,\"week\":null,\"day\":null,\"hour\":null,\"minute\":null,\"second\":\"10\"}', '*/10 * * * * *', '\\plugin\\tuCrontabs\\app\\common\\Test::demo();', 810, 1713763990, 0, 0, 0, 1);
INSERT INTO `cms_crontab` VALUES (8, '調(diào)用遠(yuǎn)程鏈接', 1, 4, '{\"month\":null,\"week\":null,\"day\":null,\"hour\":null,\"minute\":\"10\",\"second\":null}', '*/10 * * * *', 'http://www.baidu.com', 16, 1713763800, 0, 1713749636, 0, 1);
INSERT INTO `cms_crontab` VALUES (9, '執(zhí)行sheel', 3, 1, '{\"month\":null,\"week\":null,\"day\":null,\"hour\":\"1\",\"minute\":\"1\",\"second\":null}', '1 1 * * *', 'date +%s%N | cut -b1-13', 1, 1713754599, 0, 1713752627, 0, 1);
INSERT INTO `cms_crontab` VALUES (10, '測(cè)試秒級(jí)任務(wù)', 2, 5, '{\"month\":null,\"week\":null,\"day\":null,\"hour\":null,\"minute\":null,\"second\":\"10\"}', '*/10 * * * * *', 'return 456;', 2102, 1713763990, 0, 1713754772, 0, 1);
盡量不要設(shè)置小于5秒的定時(shí)任務(wù)
安裝使用中,如果遇到錯(cuò)誤,可以聯(lián)系我 1020857701@qq.com