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查看。
分享到:
相关推荐
基于以上几点原因,我们迫切的需要一个可以集中化管理的、可配置的定时任务管理器 但自己开发一套分布式的定时任务系统何其复杂,所以作者采用crontab服务做辅助,使用php实现对定时任务的配置管理 使用php管理...
除了Cron,还可以使用第三方定时任务库如`EasySwoole`或`Workerman`,它们提供了更丰富的定时任务管理功能,并且可以在无需Cron的情况下运行。 五、注意事项 - 定时任务的执行效率和稳定性至关重要,因此要确保任务...
其PHP版本 https ://gitee.com/itzhoujun/JTimer,基于thinkphp5+layui秒级定时任务管理,任务进程使用master-worker模型,无阻塞执行任务,预览图可以点击上方php版本连接,两个版本功能基本一致。 jtimer使用了...
Workerman + TP6 实现可视化定时任务 概述 Workerman + Thinkphp6 实现可视化秒级定时任务。兼容 Windows 和 Linux 系统。 其实就可视化页面部分本项目采用 TP 框架 + Layui 实现 ,当然也可以用其他方式,比如,纯 ...
Yii2+Swoole开发的定时任务管理系统,带预警邮件通知(Crontab).zip 功能列表 用户管理 权限管理 邮件预警 立即执行任务 (python+shell) 定时任务(python+shell),支持秒级定时任务,服务稳定完美运行 定时...
在ThinkPHP框架中,我们可以通过编写控制器和逻辑来处理定时任务,然后将其配置到Crontab中。以下是实现步骤: 1. **创建控制器**:在ThinkPHP项目中,创建一个专门用于定时任务的控制器,例如命名为`...
本文将深入探讨一个基于Workerman和MySQL实现的接口化秒级定时任务管理系统,该系统能够灵活地在Windows和Linux环境中运行,提供高效、稳定的定时任务调度。 Workerman是一个纯PHP开发的开源高性能的PHP socket...
便于二次开发的低成本的定时任务调度与管理系统.zip 当你拥有足够复杂的业务系统时往往需要在上百台服务器上部署不同的crontab任务,那么在接下来将会给你带来许许多多的问题: 忘记了crontab部署在哪台服务器上? ...
taskPHP基于php开发的定时计划任务框架,利用多进程实现任务的分配和运行,利用内存共享实现进程间通信,支持多线程模式需要安装pthreads扩展(可选),支持linux和windows。有较好的伸缩性、扩展性、健壮稳定性而被多家...
在 PHP 开发中,定时任务通常用于自动化执行某些任务,如数据备份、清理缓存、发送邮件等,而无需人工干预。在 ThinkPHP 框架中实现定时任务,可以利用计划任务工具(如Linux的Cron Job)配合控制器或命令行接口...
`swoole-crontab-master`这个项目利用了Swoole的定时器功能来实现类似Linux crontab的定时任务管理。在Swoole中,可以通过`Swoole\Timer`类设置定时器,这个类提供了`tick`和`after`两个方法,分别用于创建周期性和...
总之,Linux的crontab是自动化任务管理的关键工具,通过灵活的时间表达式和简单的命令行接口,为系统管理员提供了强大的定时任务能力。了解和熟练使用crontab,能极大地提高工作效率,确保系统按照预设的时间表稳定...
除了路径问题外,还可能存在其他一些导致crontab定时PHP任务失败的原因。比如: 1. PHP运行环境的配置问题。例如,定时任务执行的PHP可能使用了不同的配置文件(php.ini)或环境变量,导致与预期环境不一致。 2. ...
基于Swoole的定时管理器 可以支持毫秒级任务,秒级任务。 可以支持cron任务表达式。 Composer 安装依赖 composer require dragonmantank/cron-expression composer require doctrine/dbal composer require monolog/...
Task-Schedule基于Hyperf开发的任务调度系统基于 Hyperf + Nsq 的一个异步队列库.支持投递任务,DAG任务编排.多个任务使用同一个事务。特性默认 Nsq 驱动秒级延时任务自定义重试次数和时间自定义错误回调支持任务...
使用`crontab -e`命令打开cron定时任务配置文件,编辑并添加新的定时任务。例如,如果你想让脚本每天17:30执行,可以添加以下行: ``` 30 17 * * * /usr/bin/php -f /home/task/crontab.php >> /home/task/task....
Swoole-Crontab(基于Swoole扩展) 1.概述 基于swoole的定时器程序,支持秒级处理. 异步多进程处理。 完全兼容crontab语法,且支持秒的配置,可使用数组规定好精确操作时间 ...
easydowork / swoole-crontab简介easydowork/swoole-crontab是基于swoole的定时任务服务,安装说明详见composer.json require运行说明启动server时,添加用户进程Process加载data_file配置文件到Swool\Table中, ...
`php-crontab` 是一个基于 PHP 的实现定时任务调度的工具,它利用了 PHP 的 `pcntl_fork` 和 `crontab` 概念。`pcntl_fork` 是 PHP 中的一个进程控制扩展,用于创建子进程,而 `crontab` 通常是指 Unix/Linux 系统中...
2. **PHP编程**:织梦是基于PHP的,因此这个定时发布代码是用PHP编写的。PHP是一种广泛使用的服务器端脚本语言,用于生成动态网页内容。编写定时发布代码时,需要熟悉织梦的API接口,特别是与文章发布相关的函数。 ...