首页
Web开发
Windows程序
编程语言
数据库
移动开发
系统相关
微信
其他好文
会员
首页
>
Web开发
> 详细
linux crontab定时任务调用CI框架PHP代码
时间:
2016-08-26 12:20:52
阅读:
998
评论:
0
收藏:
0
[点我收藏+]
标签:
用途:
网站可能需要执行多个计划任务,比如每小时清理一次缓存,每天生成一次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
linux crontab定时任务调用CI框架PHP代码
标签:
原文地址:http://www.cnblogs.com/lijiageng/p/5809746.html
踩
(
0
)
赞
(
0
)
举报
评论
一句话评论(
0
)
登录后才能评论!
分享档案
更多>
2021年07月29日 (22)
2021年07月28日 (40)
2021年07月27日 (32)
2021年07月26日 (79)
2021年07月23日 (29)
2021年07月22日 (30)
2021年07月21日 (42)
2021年07月20日 (16)
2021年07月19日 (90)
2021年07月16日 (35)
周排行
更多
36.VUE — 认识 Webpack 和 安装
2021-07-28
【PHP】上传图片翻转问题
2021-07-28
php对数字进行万。亿的转化
2021-07-28
五个 .NET 性能小贴士
2021-07-28
Three.js中显示坐标轴、平面、球体、四方体
2021-07-28
.net 5+ 知新:【1】 .Net 5 基本概念和开发环境搭建
2021-07-27
1.html,css
2021-07-27
基于Docker搭建 Php-fpm + Nginx 环境
2021-07-27
nginx + http + svn
2021-07-27
kubernets kube-proxy的代理 iptables和ipvs
2021-07-26
友情链接
兰亭集智
国之画
百度统计
站长统计
阿里云
chrome插件
新版天听网
关于我们
-
联系我们
-
留言反馈
© 2014
mamicode.com
版权所有 联系我们:gaon5@hotmail.com
迷上了代码!