成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何動態設置定時任務!而不是寫死在Linux Crontab

開發 前端
本文將探討如何在PHP環境下實現這種動態定時任務,旨在提供一個更加靈活、安全且易于管理的定時任務執行機制。這將極大地提升項目的可擴展性和運維效率。

概述

在軟件開發中,定時任務是一個常見的需求,尤其是在需要定期執行某些操作的場景中。傳統的Linux cron服務雖然強大,但它的靈活性確實有限,尤其是在動態調整任務執行時間方面。但在實際項目運行中動態修改任務執行時間,實在不太靈活。

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

由于cron任務的執行時間和頻率是預定義的,當任務執行出現問題時,調試和跟蹤可能會比較困難。特別是當任務依賴于外部系統或資源時,問題定位和解決會更加復雜。頻繁修改cron配置文件可能會引入安全風險,尤其是在多用戶環境中。不當的權限管理或配置錯誤可能會導致任務被惡意利用或執行不適當的操作。

Cron Scheduler

PHP Cron Scheduler 是一個與框架無關的cron作業調度程序,可以輕松地與您的項目集成或作為獨立的命令調度程序運行。在使用這個任務調度器時,你只需要在你的服務器上創建單個 scheduler.php 入口。你的任務調度在scheduler.php方法中進行定義。

安裝

composer require peppeocchi/php-cron-scheduler

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

如何工作

在項目根目錄下創建一個包含以下內容的 scheduler.php 文件。

<?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中添加一個新條目,以便每分鐘運行 scheduler.php 。

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

就是這樣!您的調度程序已經啟動并運行,現在您可以添加您的作業,而無需再擔心crontab。這個Cron每分鐘都會調用scheduler.php命令調度器。然后評估你的計劃任務并運行到期的任務。

調度作業

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

執行一個PHP腳本

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

計劃執行時間

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

任何表達式

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

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

每分鐘執行

everyMinute 每分鐘執行。您可以選擇傳遞 $minute 以指定作業每 $minute 分鐘運行一次。

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

每小時運行

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

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

每天運行

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

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

最佳實踐

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

<?php
declare(strict_types=1);

namespace think;

date_default_timezone_set('PRC');

require __DIR__ . '/vendor/autoload.php';

# PHP 二進制文件路徑
$bin = '/usr/local/php-8.4/bin/php';
$script = __DIR__ . '/think';

$scheduler = new \GO\Scheduler();

# 2024年7月16日 @add Tinywan 執行一個Linux命令
$scheduler->raw('ps aux | grep nginx');

# 2024年7月10日 @add Tinywan 訂單自動取消 每1分鐘執行一次
$scheduler->php($script . ' order cancel', $bin)->everyMinute(5);

$scheduler->run();

執行結果

[2024-07-28T00:10:02+08:00][info] 定時任務-商品推廣關閉 end
[2024-07-28T00:11:02+08:00][info] 定時任務-賬戶統計 end
[2024-07-28T00:12:02+08:00][info] 定時任務-賬戶統計 end
[2024-07-28T00:13:01+08:00][info] 定時任務-賬戶統計 end
[2024-07-28T00:14:02+08:00][info] 定時任務-賬戶統計 end
[2024-07-28T00:15:02+08:00][info] 定時任務-商品推廣關閉 start
[2024-07-28T00:15:02+08:00][info] 定時任務-訂單 start
[2024-07-28T00:15:02+08:00][info] 定時任務-賬戶統計 end

小結

本文將探討如何在PHP環境下實現這種動態定時任務,旨在提供一個更加靈活、安全且易于管理的定時任務執行機制。這將極大地提升項目的可擴展性和運維效率。

責任編輯:武曉燕 來源: 開源技術小棧
相關推薦

2010-03-10 15:47:58

crontab定時任務

2009-10-28 10:05:29

Ubuntucrontab定時任務

2022-11-11 14:55:14

Linuxcron

2010-01-07 13:38:41

Linux定時任務

2024-11-04 16:01:01

2016-12-27 19:29:14

Linux命令定時任務

2021-12-16 14:25:03

Linux定時任務

2010-07-15 14:54:51

at命令crontab定時執行任務

2018-10-08 14:00:28

LinuxCron定時任務

2009-11-13 09:40:27

linux定時執行crontab

2021-04-16 13:20:41

ZeitLinux工具

2012-02-07 13:31:14

SpringJava

2023-11-07 07:47:35

Topic線程PUSH

2025-04-27 08:01:25

2023-12-13 18:44:02

Linux定時任務操作系統

2023-10-31 12:42:00

Spring動態增刪啟停

2024-02-28 09:54:07

線程池配置

2022-03-28 08:31:29

線程池定時任務

2017-03-13 09:12:00

TCP數據結構請求包

2020-12-21 07:31:23

實現單機JDK
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲视频在线免费观看 | 亚洲精品国产第一综合99久久 | 亚洲伊人久久综合 | av色在线| 欧美一级淫片免费视频黄 | 国产目拍亚洲精品99久久精品 | 国内精品99 | 国内91在线 | 亚洲一区三区在线观看 | wwww.8888久久爱站网 | 久久婷婷色| 欧美亚洲国产精品 | 成人亚洲视频 | 草久视频 | 91日韩 | 久久综合久久自在自线精品自 | 免费不卡视频 | 免费av在线网站 | 亚洲国产精品人人爽夜夜爽 | 少妇无套高潮一二三区 | 最新黄色在线观看 | 亚洲免费在线 | 在线免费观看黄视频 | 日韩在线视频免费观看 | 日韩电影a | 91日日 | 国产激情精品 | 成人欧美 | 亚洲成人av | 免费看片国产 | 超碰97干 | 91高清免费 | 日韩欧美1区2区 | 羞羞视频免费观看入口 | 欧美一区二区三区在线观看 | 国产精品日韩在线观看 | 午夜视频免费在线观看 | 中文在线www| 午夜网站视频 | 欧美日韩在线一区 | 99久久99 |