基于PHP的定時任務管理器:Zebra-Crontab

jopen 9年前發布 | 44K 次閱讀 作業調度框架 Zebra-Crontab

為什么使用PHP管理crontab

一般在定時任務較少的情況下,使用原生的crontab服務一般不會有什么問題,但當定時任務較多時就會產生如下問題:

  • 文本形式的定時任務可讀性很差,在沒有任何注釋的情況下,新人很難在不讀源碼的情況下了解定時任務的業務邏輯

  • 在分布式的場景中,定時任務會散落到多臺機器上,無法統一管理

  • 定時任務的日志不能集中化管理,對定時任務的運行分析及故障排除比較麻煩

基于以上幾點原因,我們迫切的需要一個可以集中化管理的、可配置的定時任務管理器 但自己開發一套分布式的定時任務系統何其復雜,所以作者采用crontab服務做輔助,使用php實現對定時任務的配置管理

使用php管理定時任務有哪些優勢

  • 定時任務可以不再是以文本方式的形式存在,可以存儲在緩沖、數據庫中,甚至你可以開發管理功能,在后臺對定時任務進行編輯

  • 定時任務的日志是可配置的,你可以按照業務需求,對日志進行差異化配置

使用方式如下:

  • 編寫一個任務管理器,可參考test/simple.php

  • 將上述腳本添加到crontab中,一分鐘執行一次

示例:

<?php
$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();


工具短小,但很精悍

在分布式場景中,你可以把定時任務寫入數據庫中進行統一管理,你可以設定哪些定時任務是由哪些機器執行, 然后通過生成文本文件的方式發送到所有機器上,再由這些機器上的phpCrontab讀取處理;從而實現分布式場景下的定時任務統一管理。

項目主頁:http://www.baiduhome.net/lib/view/home/1421553740875

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!