使用数据库进行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. python之文件目录和路径

    1.路径中不要出现中文,否则有极大可能报错 2.反斜杠问题 举例说明: 我们从Windows复制的文件路径是G:\beifen\Tea. 可以看到,路径用的是反斜杠:\. 由于反斜杠\在python里 ...

  2. dedecms 自增数使用方法

    [field:global name=autoindex runphp="yes"]@me=@me+1;[/field:global] {dede:global name=item ...

  3. Application runtime path "/opt/lampp/htdocs/yii/test/protected/runtime" is not valid. 错误

    原因:把windows版的Yii框架写的程序中的拷到Linux去,assets和runtime目录对Group和其他的权限不够.解决方案:点击这2个文件的属性,属性框全选好了,权限777了. cd p ...

  4. oracle自定义类型 示例

    ) ); ---自定义类型传参给存储过程,示例如下: create or replace procedure dropWf is cursor c_tenant is and t.id not in ...

  5. 关联Left Outer Join的第一条记录

    数据准备 CREATE TABLE person (person_id ), lastname )) / INSERT ALL INTO person (person_id, firstname, l ...

  6. ios开发之--复制到剪切板

    仅做记录: UIPasteboard *pasteboard = [UIPasteboard generalPasteboard]; pasteboard.string = @"你好&quo ...

  7. js中toFixed() 的使用(转)

    转载:http://www.studyofnet.com/news/292.html 一.定义和用法 toFixed() 方法可把 Number 四舍五入为指定小数位数的数字. 语法 NumberOb ...

  8. 【代码审计】iCMS_v7.0.7 admincp.app.php页面存在SQL注入漏洞分析

      0x00 环境准备 iCMS官网:https://www.icmsdev.com 网站源码版本:iCMS-v7.0.7 程序源码下载:https://www.icmsdev.com/downloa ...

  9. PHP代码审计笔记--变量覆盖漏洞

    变量覆盖指的是用我们自定义的参数值替换程序原有的变量值,一般变量覆盖漏洞需要结合程序的其它功能来实现完整的攻击. 经常导致变量覆盖漏洞场景有:$$,extract()函数,parse_str()函数, ...

  10. GLIBC_2.14报错

    [linux]提示"libc.so.6: version `GLIBC_2.14' not found",系统的glibc版本太低 0.以下在系统CentOS 6.3 x86_64 ...