栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 软件开发 > 后端开发 > PHP > php开源框架 > YurunPHP

定时任务 - YurunPHP1.0开发手册

YurunPHP 更新时间:发布时间: 百科书网 趣学号

YurunPHP 1.3新加入了定时任务的功能,它可以定时执行一些操作,拥有高度自由的触发时间配置功能。当然这个定时是不一定准时的,下面会有说明。如果需要极其准确的定时任务,请使用Linux下的Cron或者Windows的计划任务功能。
> YurunPHP定时任务功能不推荐执行时间较长的任务!

### 原理解析
当用户访问时,判断上次执行时间和当前时间是否满足再次调用的条件,满足则调用,不满足则不调用。YurunPHP框架使用文件锁,保证同时只有一个请求会执行定时任务。预防并发同时执行、恶意攻击的情况。

### 配置方法
#### 自动触发
在项目的Config目录下创建task.php文件,复制下面的内容

return array(
'List' => array(), // 任务列表
'Status' => false, // 是否开启自动检测,默认为false
'ExecPercent' => 1, // 触发概率,0-1代表0%-100%,默认为1
'OnlyOnce' => false, // 是否只执行一个任务就结束,防止一个请求执行时间过长导致失败。默认为false
);

#### 手动触发
在任意地方执行下面的语句

Task::exec();


### 任务开发
1.在项目目录下创建Task文件夹
2.在Task文件夹下创建TestTask.class.php
3.在TestTask.class.php中为以下代码

class TestTask extends Taskbase
{
public static $name = '任务名称';
public static function exec()
{
// TODO: 任务操作
}
}

4.在配置文件task.php的List下加入

'Test' => array(
// 触发事件条件1
array(
'StartTime' => 0,
'StopTime' => 0,
'Mode' => 0,
'Month' => 0,
'Day' => 0,
'Week' => 0,
'Hour' => 0,
'Minute' => 0,
'Second' => 0,
'Seconds' => 0,
),
// 触发事件条件2
array(
'StartTime' => 0,
'StopTime' => 0,
'Mode' => 0,
'Month' => 0,
'Day' => 0,
'Week' => 0,
'Hour' => 0,
'Minute' => 0,
'Second' => 0,
'Seconds' => 0,
),
),

上面的触发条件有需要可以无限增加,条件参数说明看下表:

| 参数名 | 说明 |
| --- | --- |
| StartTime | 时间戳。任务允许执行的开始时间。可不设置。 |
| StopTime | 时间戳。任务允许执行的结束时间。可不设置。 |
| Mode | 条件判断模式。可不设置。看下面一个表格。 |
| Month | 几月。可不设置。 |
| Day | 几日。可不设置。 |
| Week | 星期几,周一-周日=1-7。可不设置。 |
| Hour | 小时。可不设置。 |
| Minute | 分钟。可不设置。 |
| Second | 秒数。可不设置。 |
| Seconds | 间隔多少秒执行,Mode为MODE_SECOND时有效。 |

#### Mode可选值表:
| 参数名 | 说明 |
| --- | --- |
| Task::MODE_SECOND | 按秒执行 |
| Task::MODE_EVERY_YEAR | 按每年执行 |
| Task::MODE_EVERY_MonTH | 按每月执行 |
| Task::MODE_EVERY_WEEK | 按每周执行 |
| Task::MODE_EVERY_DAY | 按每日执行 |
| Task::MODE_EVERY_HOUR | 按每小时执行 |

转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/213905.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号