基於PHP的crontab定時任務管理

2021-09-02 10:54:04 字數 2207 閱讀 1893

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

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

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

[php]view plain

copy

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傳遞第二個引數指定日誌檔案日誌(確保可寫)。日誌檔案內容如下:

[php]view plain

copy

[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]view plain

copy

* * * * * php php_crontab_manager.php  

管理器相關依賴:

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

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

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

基於php的crontab定時任務管理

基於PHP的crontab定時任務管理

by jenner 2014年11月10日 閱讀次數 6 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...