基於PHP的crontab定時任務管理_PHP教程

來源:互聯網
上載者:User

基於PHP的crontab定時任務管理


BY JENNER · 2014年11月10日· 閱讀次數:6

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

  • 分布式定時任務集中化管理
  • 多條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": "1.0.0",
    • pcntl擴充
    • crontab服務

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

      項目地址:

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

      具體源碼可以在github查看。

      原創文章,轉載請註明: 轉載自始終不夠

      本文連結地址: 基於PHP的crontab定時任務管理

      http://www.bkjia.com/PHPjc/914778.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/914778.htmlTechArticle基於PHP的crontab定時任務管理 BY JENNER · 2014年11月10日· 閱讀次數:6 linux的crontab一直是伺服器營運、業務開展的利器。但當定時任務增多時,...

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.