基于PHP的crontab定时任务管理

php中文网
发布: 2016-06-23 13:45:58
原创
1479人浏览过

BY JENNER · 2014年11月10日· 阅读次数:6

linux的crontab一直是服务器运维、业务开展的利器。但当定时任务增多时,管理和迁移都变得很麻烦,而且容易出问题。下面提供了一个使用php编写的crontab管理器,但仍需要在crontab下添加一个一分钟执行一次的叫来来运行这个管理器。通过这个管理器,可以实现以下目的:

  • 分布式定时任务集中化管理
  • 多条crontab记录合并
  • crontab记录持久化存储(配置文件或数据库)
  • 这里不建议你使用数据库进行crontab配置管理,除非你能够保证数据库的请求能够在长时间内保持稳定响应的话。推荐使用nosql类型的cache存储,同时做好持久化备份。

    废话不多说,上一段测试代码: 

    立即学习PHP免费学习笔记(深入)”;

    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();
    登录后复制

    硅基智能
    硅基智能

    基于Web3.0的元宇宙,去中心化的互联网,高质量、沉浸式元宇宙直播平台,用数字化重新定义直播

    硅基智能 62
    查看详情 硅基智能

    这段代码使用了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速学教程(入门到精通)
    PHP速学教程(入门到精通)

    PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

    下载
    来源:php中文网
    本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
    最新问题
    开源免费商场系统广告
    热门教程
    更多>
    最新下载
    更多>
    网站特效
    网站源码
    网站素材
    前端模板
    关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
    php中文网:公益在线php培训,帮助PHP学习者快速成长!
    关注服务号 技术交流群
    PHP中文网订阅号
    每天精选资源文章推送
    PHP中文网APP
    随时随地碎片化学习

    Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号