• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

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

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
用途:
网站可能需要执行多个计划任务,比如每小时清理一次缓存,每天生成一次sitemap,每周备份一次数据库...如果都写在crontab里,可能不便于管理和用户配置,使用这个类可以方便的添加计划任务,查看执行计划任务的log,也可以在后台管理每个计划任务的执行时间。
 
安装:
1 数据库添加表:
  • CREATE TABLE `cron_schedule` (
  •   `schedule_id` int(10) unsigned NOT NULL auto_increment,
  •   `job_code` varchar(255) NOT NULL default '0',
  •   `status` enum('pending','running','success','missed','error') NOT NULL default 'pending',
  •   `messages` text,
  •   `created_at` datetime NOT NULL default '0000-00-00 00:00:00',
  •   `scheduled_at` datetime NOT NULL default '0000-00-00 00:00:00',
  •   `executed_at` datetime NOT NULL default '0000-00-00 00:00:00',
  •   `finished_at` datetime NOT NULL default '0000-00-00 00:00:00',
  •   PRIMARY KEY (`schedule_id`),
  •   KEY `task_name` (`job_code`),
  •   KEY `scheduled_at` (`scheduled_at`,`status`)
  • ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
  •  
    2 /application/config/config.php添加:
  • /*
  • |--------------------------------------------------------------------------
  • | Cron Schedule Variables
  • |--------------------------------------------------------------------------
  • |
  • | 'enable_cron' = 是否开启cron schedule
  • | 'cron_schedule_table_name' = 保存cron schedule的表
  • | 'cron_schedule_generate_every' = 生成cron schedule的时间间隔
  • | 'cron_schedule_ahead_for' = 每次产生多少时间内的cron schedule
  • | 'cron_schedule_lifetime' = cron schedule的有效期
  • | 'cron_history_cleanup_every' = 清除cron schedule的时间间隔
  • | 'cron_history_success_lifetime' = 运行成功的cron schedule的保存时间
  • | 'cron_history_failure_lifetime' = 运行失败的cron schedule的保存时间
  • |
  • */
  • $config['enable_cron'] = TRUE;
  • $config['cron_schedule_table_name'] = 'cron_schedule';
  • $config['cron_schedule_generate_every'] = 15;
  • $config['cron_schedule_ahead_for'] = 20;
  • $config['cron_schedule_lifetime'] = 15;
  • $config['cron_history_cleanup_every'] = 10;
  • $config['cron_history_success_lifetime'] = 60;
  • $config['cron_history_failure_lifetime'] = 600;
  • 3 /application/libraries/Cron_schedule.php 参见附件
     
    4 新建 /application/config/cron_schedules.php  在此文件中添加计划任务,比如:
  • <?php
  • $cron_schedule['clear_log'] = array(
  •     'schedule' => array(
  •         'config_path' => '', // cron表达式的标识 用于在配置文件或数据库中获取表达式 直接指定时为空
  •         'cron_expr' => '*/5 * * * *' // 直接指定cron表达式 在配置文件或数据库中获取表达式为空
  •     ),
  •     'run' => array(
  •         'filepath' => 'cron', // 文件所在的目录 相对于APPPATH
  •         'filename' => 'Myclass.php', // 文件名
  •         'class' => 'MyClass', // 类名 如果只是简单函数 可为空
  •         'function' => 'clear_log', // 要执行的函数
  •         'params' => array() // 需要传递的参数
  •     )
  • );
  • //$cron_schedule['clear_log'] = ...
  • //$cron_schedule['create_sitemap'] = ...
  • 5 添加对应的类和函数 /application/cron/Myclass.php
  • <?php
  • class MyClass
  • {
  •     function clear_log($params = array())
  •     {
  •         // 清理LOG
  •     }
  •     
  •     //.....
  • }
  • 6 添加 /application/controllers/cron.php
  • <?php
  • class Cron extends CI_Controller
  • {
  •     public function index()
  •     {
  •         $this->load->library('cron_schedule');
  •         $this->cron_schedule->dispatch();
  •     }
  • }
  • 7 添加系统cron
  • #crontab -e
  • 根据需要添加计划任务,比如:
  • */5 * * * * php /var/www/ci210/index.php cron index
  • #service cron restart

  • 鲜花

    握手

    雷人

    路过

    鸡蛋
    该文章已有0人参与评论

    请发表评论

    全部评论

    专题导读
    上一篇:
    怎么去掉织梦网站首页带的index.html/index.php发布时间:2022-07-10
    下一篇:
    PHP导出数据到CSV文件发布时间:2022-07-10
    热门推荐
    阅读排行榜

    扫描微信二维码

    查看手机版网站

    随时了解更新最新资讯

    139-2527-9053

    在线客服(服务时间 9:00~18:00)

    在线QQ客服
    地址:深圳市南山区西丽大学城创智工业园
    电邮:jeky_zhao#qq.com
    移动电话:139-2527-9053

    Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap