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

用途:

网站可能需要执行多个计划任务,比如每小时清理一次缓存,每天生成一次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  在此文件中添加计划任务,比如:

$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

class MyClass

{

function clear_log($params = array())

{

// 清理LOG

}

//.....

}

6 添加 /application/controllers/cron.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

原文:http://www.cnblogs.com/lijiageng/p/5809746.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值