宅男在线永久免费观看网直播,亚洲欧洲日产国码无码久久99,野花社区在线观看视频,亚洲人交乣女bbw,一本一本久久a久久精品综合不卡

全部
常見問題
產(chǎn)品動態(tài)
精選推薦

深度討論P(yáng)HP利用服務(wù)器Crontab進(jìn)行動態(tài)設(shè)置定時任務(wù)~

管理 管理 編輯 刪除

概述

在軟件開發(fā)中,定時任務(wù)是一個常見的需求,尤其是在需要定期執(zhí)行某些操作的場景中。傳統(tǒng)的Linux cron服務(wù)雖然強(qiáng)大,但它的靈活性確實有限,尤其是在動態(tài)調(diào)整任務(wù)執(zhí)行時間方面。但在實際項目運(yùn)行中動態(tài)修改任務(wù)執(zhí)行時間,實在不太靈活。

隨著項目規(guī)模的擴(kuò)大,管理大量的cron任務(wù)和它們的配置文件可能會變得復(fù)雜且容易出錯。特別是在多環(huán)境部署的情況下,維護(hù)一致性和同步配置文件需要額外的工作。

由于cron任務(wù)的執(zhí)行時間和頻率是預(yù)定義的,當(dāng)任務(wù)執(zhí)行出現(xiàn)問題時,調(diào)試和跟蹤可能會比較困難。特別是當(dāng)任務(wù)依賴于外部系統(tǒng)或資源時,問題定位和解決會更加復(fù)雜。頻繁修改cron配置文件可能會引入安全風(fēng)險,尤其是在多用戶環(huán)境中。不當(dāng)?shù)臋?quán)限管理或配置錯誤可能會導(dǎo)致任務(wù)被惡意利用或執(zhí)行不適當(dāng)?shù)牟僮鳌?/p>

Cron Scheduler

PHP Cron Scheduler 是一個與框架無關(guān)的cron作業(yè)調(diào)度程序,可以輕松地與您的項目集成或作為獨(dú)立的命令調(diào)度程序運(yùn)行。在使用這個任務(wù)調(diào)度器時,你只需要在你的服務(wù)器上創(chuàng)建單個 scheduler.php 入口。你的任務(wù)調(diào)度在scheduler.php方法中進(jìn)行定義。

安裝

composer require peppeocchi/php-cron-scheduler

開源地址:https://github.com/peppeocchi/php-cron-scheduler

如何工作

在項目根目錄下創(chuàng)建一個包含以下內(nèi)容的 scheduler.php 文件。

require_once __DIR__.'/vendor/autoload.php';
use GO\Scheduler;
// Create a new scheduler
$scheduler = new Scheduler();
// ... configure the scheduled jobs (see below) ...
// Let the scheduler execute jobs which are due.
$scheduler->run();

然后在crontab中添加一個新條目,以便每分鐘運(yùn)行 scheduler.php 。

* * * * * /usr/local/php-8.4/bin/php /home/tinywan/demo/scheduler.php 1>> /dev/null 2>&1

就是這樣!您的調(diào)度程序已經(jīng)啟動并運(yùn)行,現(xiàn)在您可以添加您的作業(yè),而無需再擔(dān)心crontab。這個Cron每分鐘都會調(diào)用scheduler.php命令調(diào)度器。然后評估你的計劃任務(wù)并運(yùn)行到期的任務(wù)。

調(diào)度作業(yè)

默認(rèn)情況下,您的所有作業(yè)將嘗試在后臺運(yùn)行。PHP腳本和原始命令默認(rèn)情況下將在后臺運(yùn)行,而函數(shù)將始終在前臺運(yùn)行。您可以通過調(diào)用 inForeground() 方法強(qiáng)制命令在前臺運(yùn)行。必須將輸出發(fā)送到電子郵件的作業(yè)將在前臺運(yùn)行。

執(zhí)行一個PHP腳本

$scheduler->php('path/to/my/script.php');

計劃執(zhí)行時間

有幾種方法可以幫助您設(shè)置計劃的執(zhí)行時間。如果您不調(diào)用此方法中的任何一個,則作業(yè)將每分鐘(*)運(yùn)行一次。

任何表達(dá)式

at -此方法接受dragonmantank/cron-expression支持的任何表達(dá)式

$scheduler->php('script.php')->at('* * * * *');

每分鐘執(zhí)行

everyMinute 每分鐘執(zhí)行。您可以選擇傳遞 $minute 以指定作業(yè)每 $minute 分鐘運(yùn)行一次。

$scheduler->php('script.php')->everyMinute();
$scheduler->php('script.php')->everyMinute(5);

每小時運(yùn)行

hourly 每小時運(yùn)行一次。您可以選擇傳遞您想要運(yùn)行的 $minute ,默認(rèn)情況下,它將在每小時的'00'分鐘運(yùn)行。

$scheduler->php('script.php')->hourly();
$scheduler->php('script.php')->hourly(53);

每天運(yùn)行

daily 每天運(yùn)行一次。您可以選擇傳遞 $hour$minute 以獲得更細(xì)粒度的控制(或字符串 hour:minute

$scheduler->php('script.php')->daily();
$scheduler->php('script.php')->daily(22, 03);
$scheduler->php('script.php')->daily('22:03');

最佳實踐

項目根目錄 scheduler.php 文件參考

pdeclare(strict_types=1);
namespace think;
date_default_timezone_set('PRC');
require __DIR__ . '/vendor/autoload.php';
# PHP 二進(jìn)制文件路徑
$bin = '/usr/local/php-8.4/bin/php';
$script = __DIR__ . '/think';
$scheduler = new \GO\Scheduler();
# 2024年7月16日 執(zhí)行一個Linux命令
$scheduler->raw('ps aux | grep nginx');
# 2024年7月10日 訂單自動取消 每1分鐘執(zhí)行一次
$scheduler->php($script . ' order cancel', $bin)->everyMinute(5);
$scheduler->run();

執(zhí)行結(jié)果

[2024-07-28T00:10:02+08:00][info] 定時任務(wù)-商品推廣關(guān)閉 end
[2024-07-28T00:11:02+08:00][info] 定時任務(wù)-賬戶統(tǒng)計 end
[2024-07-28T00:12:02+08:00][info] 定時任務(wù)-賬戶統(tǒng)計 end
[2024-07-28T00:13:01+08:00][info] 定時任務(wù)-賬戶統(tǒng)計 end
[2024-07-28T00:14:02+08:00][info] 定時任務(wù)-賬戶統(tǒng)計 end
[2024-07-28T00:15:02+08:00][info] 定時任務(wù)-商品推廣關(guān)閉 start
[2024-07-28T00:15:02+08:00][info] 定時任務(wù)-訂單 start
[2024-07-28T00:15:02+08:00][info] 定時任務(wù)-賬戶統(tǒng)計 end

小結(jié)

本文快易數(shù)據(jù)將和大家一起探討如何在PHP環(huán)境下實現(xiàn)這種動態(tài)定時任務(wù),旨在提供一個更加靈活、安全且易于管理的定時任務(wù)執(zhí)行機(jī)制。這將極大地提升項目的可擴(kuò)展性和運(yùn)維效率。

請登錄后查看

快易數(shù)據(jù)中心 最后編輯于2024-07-29 11:11:16

快捷回復(fù)
回復(fù)
回復(fù)
回復(fù)({{post_count}}) {{!is_user ? '我的回復(fù)' :'全部回復(fù)'}}
排序 默認(rèn)正序 回復(fù)倒序 點贊倒序

{{item.user_info.nickname ? item.user_info.nickname : item.user_name}} LV.{{ item.user_info.bbs_level || item.bbs_level }}

作者 管理員 企業(yè)

{{item.floor}}# 同步到gitee 已同步到gitee {{item.is_suggest == 1? '取消推薦': '推薦'}}
{{item.is_suggest == 1? '取消推薦': '推薦'}}
沙發(fā) 板凳 地板 {{item.floor}}#
{{item.user_info.title || '暫無簡介'}}
附件

{{itemf.name}}

{{item.created_at}}  {{item.ip_address}}
打賞
已打賞¥{{item.reward_price}}
{{item.like_count}}
{{item.showReply ? '取消回復(fù)' : '回復(fù)'}}
刪除
回復(fù)
回復(fù)

{{itemc.user_info.nickname}}

{{itemc.user_name}}

回復(fù) {{itemc.comment_user_info.nickname}}

附件

{{itemf.name}}

{{itemc.created_at}}
打賞
已打賞¥{{itemc.reward_price}}
{{itemc.like_count}}
{{itemc.showReply ? '取消回復(fù)' : '回復(fù)'}}
刪除
回復(fù)
回復(fù)
查看更多
打賞
已打賞¥{{reward_price}}
1990
{{like_count}}
{{collect_count}}
添加回復(fù) ({{post_count}})

相關(guān)推薦

快速安全登錄

使用微信掃碼登錄
{{item.label}} 加精
{{item.label}} {{item.label}} 板塊推薦 常見問題 產(chǎn)品動態(tài) 精選推薦 首頁頭條 首頁動態(tài) 首頁推薦
取 消 確 定
回復(fù)
回復(fù)
問題:
問題自動獲取的帖子內(nèi)容,不準(zhǔn)確時需要手動修改. [獲取答案]
答案:
提交
bug 需求 取 消 確 定
打賞金額
當(dāng)前余額:¥{{rewardUserInfo.reward_price}}
{{item.price}}元
請輸入 0.1-{{reward_max_price}} 范圍內(nèi)的數(shù)值
打賞成功
¥{{price}}
完成 確認(rèn)打賞

微信登錄/注冊

切換手機(jī)號登錄

{{ bind_phone ? '綁定手機(jī)' : '手機(jī)登錄'}}

{{codeText}}
切換微信登錄/注冊
暫不綁定
CRMEB客服

CRMEB咨詢熱線 咨詢熱線

400-8888-794

微信掃碼咨詢

CRMEB開源商城下載 源碼下載 CRMEB幫助文檔 幫助文檔
返回頂部 返回頂部
CRMEB客服