linux crontab定时任务调用CI框架PHP代码

用途:

网站可能需要执行多个计划任务,比如每小时清理一次缓存,每天生成一次sitemap,每周备份一次数据库...如果都写在crontab里,可能不便于管理和用户配置,使用这个类可以方便的添加计划任务,查看执行计划任务的log,也可以在后台管理每个计划任务的执行时间。

安装:

1 数据库添加表:

  1. CREATE TABLE `cron_schedule` (
  2. `schedule_id` int(10) unsigned NOT NULL auto_increment,
  3. `job_code` varchar(255) NOT NULL default ‘0‘,
  4. `status` enum(‘pending‘,‘running‘,‘success‘,‘missed‘,‘error‘) NOT NULL default ‘pending‘,
  5. `messages` text,
  6. `created_at` datetime NOT NULL default ‘0000-00-00 00:00:00‘,
  7. `scheduled_at` datetime NOT NULL default ‘0000-00-00 00:00:00‘,
  8. `executed_at` datetime NOT NULL default ‘0000-00-00 00:00:00‘,
  9. `finished_at` datetime NOT NULL default ‘0000-00-00 00:00:00‘,
  10. PRIMARY KEY (`schedule_id`),
  11. KEY `task_name` (`job_code`),
  12. KEY `scheduled_at` (`scheduled_at`,`status`)
  13. ) ENGINE=MyISAM DEFAULT CHARSET=utf8;

2 /application/config/config.php添加:

  1. /*
  2. |--------------------------------------------------------------------------
  3. | Cron Schedule Variables
  4. |--------------------------------------------------------------------------
  5. |
  6. | ‘enable_cron‘ = 是否开启cron schedule
  7. | ‘cron_schedule_table_name‘ = 保存cron schedule的表
  8. | ‘cron_schedule_generate_every‘ = 生成cron schedule的时间间隔
  9. | ‘cron_schedule_ahead_for‘ = 每次产生多少时间内的cron schedule
  10. | ‘cron_schedule_lifetime‘ = cron schedule的有效期
  11. | ‘cron_history_cleanup_every‘ = 清除cron schedule的时间间隔
  12. | ‘cron_history_success_lifetime‘ = 运行成功的cron schedule的保存时间
  13. | ‘cron_history_failure_lifetime‘ = 运行失败的cron schedule的保存时间
  14. |
  15. */
  16. $config[‘enable_cron‘] = TRUE;
  17. $config[‘cron_schedule_table_name‘] = ‘cron_schedule‘;
  18. $config[‘cron_schedule_generate_every‘] = 15;
  19. $config[‘cron_schedule_ahead_for‘] = 20;
  20. $config[‘cron_schedule_lifetime‘] = 15;
  21. $config[‘cron_history_cleanup_every‘] = 10;
  22. $config[‘cron_history_success_lifetime‘] = 60;
  23. $config[‘cron_history_failure_lifetime‘] = 600;

3 /application/libraries/Cron_schedule.php 参见附件

4 新建 /application/config/cron_schedules.php  在此文件中添加计划任务,比如:

  1. <?php
  2. $cron_schedule[‘clear_log‘] = array(
  3. ‘schedule‘ => array(
  4. ‘config_path‘ => ‘‘, // cron表达式的标识 用于在配置文件或数据库中获取表达式 直接指定时为空
  5. ‘cron_expr‘ => ‘*/5 * * * *‘ // 直接指定cron表达式 在配置文件或数据库中获取表达式为空
  6. ),
  7. ‘run‘ => array(
  8. ‘filepath‘ => ‘cron‘, // 文件所在的目录 相对于APPPATH
  9. ‘filename‘ => ‘Myclass.php‘, // 文件名
  10. ‘class‘ => ‘MyClass‘, // 类名 如果只是简单函数 可为空
  11. ‘function‘ => ‘clear_log‘, // 要执行的函数
  12. ‘params‘ => array() // 需要传递的参数
  13. )
  14. );
  15. //$cron_schedule[‘clear_log‘] = ...
  16. //$cron_schedule[‘create_sitemap‘] = ...

5 添加对应的类和函数 /application/cron/Myclass.php

  1. <?php
  2. class MyClass
  3. {
  4. function clear_log($params = array())
  5. {
  6. // 清理LOG
  7. }
  8. //.....
  9. }

6 添加 /application/controllers/cron.php

  1. <?php
  2. class Cron extends CI_Controller
  3. {
  4. public function index()
  5. {
  6. $this->load->library(‘cron_schedule‘);
  7. $this->cron_schedule->dispatch();
  8. }
  9. }

7 添加系统cron

  1. #crontab -e
  2. 根据需要添加计划任务,比如:
  3. */5 * * * * php /var/www/ci210/index.php cron index
  4. #service cron restart
时间: 2025-01-02 11:21:10

linux crontab定时任务调用CI框架PHP代码的相关文章

Linux Crontab [定时任务] 命令与参数详解

crontab命令常用于Unix和Linux系统中,用于设置周期性被执行的指令. 该命令从标准输入设备读取指令,并将其存放于crontab文件中,以供读取和执行. 通常,crontab储存的指令被守护进程激活,crond服务常常在后台运行. 通过设定的时间来检查是否有作业需要执行,这类作业一般称为:cron jobs. crontab 文件 crontab文件包含送交cron守护进程的一系列作业和指令. 每个用户可以拥有自己的crontab文件,同时操作系统保存一个针对整个系统的crontab文

Linux crontab 定时任务

http://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/crontab.html 19. crontab 定时任务 通过crontab 命令,我们可以在固定的间隔时间执行指定的系统指令或 shell script脚本.时间间隔的单位可以是分钟.小时.日.月.周及以上的任意组合.这个命令非常适合周期性的日志分析或数据备份等工作. 19.1. 命令格式 crontab [-u user] file crontab [-u user] [ -e |

linux crontab 定时任务解析

-----------crontab定时任务---------------------- 检查crontab工具是否安装 crontab -l 检查crontab服务是否启动 service crond status 在日志文件上每分钟把当前时间写入log.txt中 crontab -e */1 * * * * date >> /tmp/log.txt 分 时 日 月 星期几[0或7表示星期天] 案例: (1)每晚的21:30重启apache 30 21 * * * service httpd

linux crontab 定时任务计划

crontab [-u username] [-l|-e|-r] 参数: -u: 只有root才能进行这个任务,也即帮其他用户新建/删除crontab工作调度; -e: 编辑crontab 的工作内容; -l: 查阅crontab的工作内容; -r: 删除所有的crontab的工作内容,若仅要删除一项,请用-e去编辑. 范例一:用dmtsai的身份在每天的12:00发信给自己 crontab -e #此时会进入vi的编辑界面让你编辑工作.注意到,每项工作都是一行. 0    12   *   *

linux crontab定时任务运行shell脚本(shell执行sql文件)

今天做个linux定时任务(每晚12点把表汇总). 顺便写个博客记录一下~~ 为什么用linux定时任务,而不是在项目加定时任务呢?原因就是防止因为各种原因项目崩溃..所以就用了更加稳定的linux定时任务(我是这么想的( ^_^ )). 起初我感觉很简单,以为顶多半小时就搞定了,,,结果从10点弄到12点半才搞定(主要是我英语太渣和数据库报错导致)... ︿( ̄︶ ̄)︿废话到此结束--------------- crontab 格式     * * * * *      XXX 分    时

Linux Crontab 定时任务 命令详解

在工作中需要数据库在每天零点自动备份所以需要建立一个定时任务.我选择在Linux下使用Crontab来添加定时任务执行shell文件.shell文件有数据库备份命令. 一.  Crontab 介绍          crontab命令的功能是在一定的时间间隔调度一些命令的执行. 二.查看/etc/crontab文件 vim  /etc/crontab 三.文件/etc/crontab中每行任务的描述格式如下: minute hour day month dayofweek command min

Linux crontab定时任务执行php文件

简单介绍一下什么是crontab crond是Linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务 第一步:安装crontab 检测是否已安装 # crontab -bash: crontab: command not found   (未安装) #  yum install cront

linux crontab 定时任务执行

cron机制        cron可以让系统在指定的时间,去执行某个指定的工作,我们可以使用crontab指令来管理cron机制 crontab参数        -u:这个参数可以让我们去编辑其他人的crontab,如果没有加上这个参数的话就会开启自己的crontab /etc/crontab文件和crontab -e命令区别 1.格式不同 前者 # For details see man 4 crontabs # Example of job definition:# .---------

Linux crontab 定时任务设置

第1列分钟1-59第2列小时1-23(0表示子夜)第3列日1-31第4列月1-12第5列星期0-6(0表示星期天)第6列要运行的命令 下面是crontab的格式:分 时 日 月 星期 要运行的命令 这里有crontab文件条目的一些例子: 30 21 * * * /usr/local/apache/bin/apachectl restart上面的例子表示每晚的21:30重启apache. 45 4 1,10,22 * * /usr/local/apache/bin/apachectl resta