基於PHP的crontab定時任務管理

2021-06-26 22:40:12 字數 1821 閱讀 3464

by jenner · 2023年11月10日· 閱讀次數:6

linux的crontab一直是伺服器運維、業務開展的利器。但當定時任務增多時,管理和遷移都變得很麻煩,而且容易出問題。下面提供了乙個使用php編寫的crontab管理器,但仍需要在crontab下新增乙個一分鐘執行一次的叫來來執行這個管理器。通過這個管理器,可以實現以下目的:

這裡不建議你使用資料庫進行crontab配置管理,除非你能夠保證資料庫的請求能夠在長時間內保持穩定響應的話。推薦使用nosql型別的cache儲存,同時做好持久化備份。

廢話不多說,上一段測試**:

define('ds', directory_separator);

requiredirname(__file__) . ds . 'vendor'. ds . 'autoload.php';

date_default_timezone_set('prc');

error_reporting(e_all);

$crontab_config= [

'test_1'=> [

'name'=> '服務監控1',

'cmd'=> 'php -v',

'output'=> '/tmp/test.log',

'time'=> '* * * * *'

],'single_test'=> [

'name'=> 'php -i',

'cmd'=> 'php -i',

'output'=> '/tmp/single_script.log',

'time'=> [

'* * * * *',

'* * * * *',

],],];

$crontab_server= new\jenner\zebra\crontab\crontab($crontab_config);

$crontab_server->start();

這段**使用了php的包管理器composer,如果你不了解,可以手動把需要用到的類,include到你的php指令碼。

執行後,我們會在預設的日誌檔案(/var/log/php_crontab.log)中檢視crontab的執行記錄,當然你可以通過向crontab傳遞第二個引數指定日誌檔案日誌(確保可寫)。日誌檔案內容如下:

[2014-11-10 19:50:08]-content:start. pid3778

[2014-11-10 19:50:08]-content:php -v

[2014-11-10 19:50:08]-content:php -i

[2014-11-10 19:50:08]-content:php -i

[2014-11-10 19:50:08]-content:end. pid:3778

日誌會記錄程式的啟動時間、執行的命令、pid等資訊。由於我是手動執行的,所以描述不是準確的00秒。正式使用時,在crontab中新增一條如下命令即可實現該管理器的自動執行。

* * * * * php php_crontab_manager.php

管理器相關依賴:

jenner/multi_process包是乙個簡單的程序控制包,主要是為了在執行定時任務時,使用子程序執行,這樣父程序就不會阻塞,造成定時任務延遲的問題。

這個專案託管在github上,同時提供了packagist包支援,你可以通過在composer.json中新增:"jenner/crontab": "1.0.0"來載入這個包。

具體原始碼可以在github檢視。

基於php的crontab定時任務管理

基於PHP的crontab定時任務管理

linux的crontab一直是伺服器運維 業務開展的利器。但當定時任務增多時,管理和遷移都變得很麻煩,而且容易出問題。下面提供了乙個使用php編寫的crontab管理器,但仍需要在crontab下新增乙個一分鐘執行一次的叫來來執行這個管理器。通過這個管理器,可以實現以下目的 這裡不建議你使用資料庫...

PHP的crontab定時任務管理

cron 是乙個linux下的定時執行工具。使用者可以使用crontab工具來配置cron任務。安裝crontab yum install crontabs 啟動 sbin service crond start 啟動服務 sbin service crond stop 關閉服務 sbin serv...

crontab定時執行php程式

定時任務一直就是應用程式不可少的功能,在php中,想要做定時任務,如果使用ignore user abort true 消耗資源。這裡用的是linux crontab任務計畫 常用選項 u 指定某個使用者,不加 u選項則為當前使用者 e 制定計畫任務 l 列出計畫任務 r 刪除計畫任務。使用 cro...