使用数据库进行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:082881064151]-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定时任务管理

代码使用了php的包管理器composer,include到你的php脚本的更多相关文章

  1. Sublime Text3 包管理器、插件安装

    安装插件之前先要安装包管理器,包管理器的安装也很简单,复制粘贴对应版本命令代码回车即可 一.包管理器安装 1.打开Sublime3控制台,按ctrl+~ 2.输入安装包管理器命令行代码 3.注意需要联 ...

  2. ubuntu利用包管理器安装Node.JS

    步骤1:用curl获取源代码在我们用卷曲获取源代码之前,我们必须先升级操作系统,然后用卷发命令获取NodeSource添加到本地仓库. root@ubuntu-:~#apt-get update 安装 ...

  3. 利用包管理器安装Node.JS

    步骤1:用curl获取源代码在我们用卷曲获取源代码之前,我们必须先升级操作系统,然后用卷发命令获取NodeSource添加到本地仓库. root@ubuntu-15:~#apt-get update安 ...

  4. nuget包管理器控制台下的powershell脚本介绍

    http://personball.com/powershell/2016/07/15/powershell-tips 定制自己的powershell,减少重复工作 安装一系列自己的常用nuget包 ...

  5. #VSTS日志# 15/11/18 插件应用市场,RM,包管理器等

    [小编]从今天开始,我将在这个博客上连载Visual Studio Team Service的定期更新.VSTS是Team Foundation Server 的在线版本,微软每3周会对这个服务进行更 ...

  6. Swift 正式开源, 包括 Swift 核心库和包管理器

    Swift 正式开源!Swift 团队很高兴宣布 Swift 开始开源新篇章.自从苹果发布 Swfit 编程语言,就成为了历史上发展最快的编程语言之一.Swift 通过设计使得软件编写更加快速更加安全 ...

  7. Cygwin的包管理器:apt-cyg

    参考<Cygwin的包管理器:apt-cyg> cygwin下安装每次需要启动set_up,比较蛋疼,还是debian的apt方便,在网上看到应该cygwin 下的apt,觉得不错. 从h ...

  8. 前端开发bower包管理器

    Bower 是 twitter 推出的一款包管理工具,基于nodejs的模块化思想,他可以很好的帮助你帮你解决js的依赖管理,比如jquery angular bootstrap 等等. 可以很方便的 ...

  9. NET Core 静态文件及JS包管理器(npm, Bower)的使用

    NET Core 静态文件及JS包管理器(npm, Bower)的使用 文章目录 在 ASP.NET Core 中添加静态文件 使用npm管理JavaScript包 使用Bower管理JavaScri ...

随机推荐

  1. [Scikit-learn] 2.5 Dimensionality reduction - ICA

    理论学习: 独立成分分析ICA历史 Ref: Lecture 15 | Machine Learning (Stanford) - NG From: https://wenku.baidu.com/v ...

  2. jQuery获取CSS样式中的颜色值的问题

    转自:http://blog.csdn.net/cwj649956781/article/details/23261529 jQuery获取CSS样式中的颜色值的问题,不同浏览器格式不同的解决办法,需 ...

  3. Dubbo 实例

    POM: <!-- Dubbo --> <dependency> <groupId>com.alibaba</groupId> <artifact ...

  4. 【ArcGIS】ArcGIS Enterprise部署

    单机部署 多层部署 高可用性部署

  5. Linux应急响应入侵排查思路

    0x00 前言 ​ 当企业发生黑客入侵.系统崩溃或其它影响业务正常运行的安全事件时,急需第一时间进行处理,使企业的网络信息系统在最短时间内恢复正常工作,进一步查找入侵来源,还原入侵事故过程,同时给出解 ...

  6. 数组名和数组名取地址&

        在C中, 在几乎所有使用数组的表达式中,数组名的值是个指针常量,也就是数组第一个元素的地址. 它的类型取决于数组元素的类型: 如果它们是int类型,那么数组名的类型就是“指向int的常量指针“ ...

  7. CopyTransform

    // TransformCopier.cs v 1.1 // homepage: http://wiki.unity3d.com/index.php/CopyTransform using Unity ...

  8. 在input中既隐藏边框,也隐藏轮廓的设置

    在设置input的时候,我们往往不想显示边框,所以通常会在css里面写"border"none",但是结果往往差强人意,如下图 我们这个时候可以加一个属性来把它的轮廓也隐 ...

  9. 关于GDI+的一些使用基础设置

    一.新建一个MFC的单文档工程,例如工程名字叫GDIPLUSTEST1. 二.在工程的stdafx.h头文件中添加入 #include "gdiplus.h" using name ...

  10. 《转》Python学习(16)-python异常

    转自 http://www.cnblogs.com/BeginMan/p/3171445.html 一.什么是错误,什么是异常,它们两者区别 这里解释如下:个人觉得很通俗易懂 错误是指在执行代码过程中 ...