thinkphp- CronRunBehavior.class.php如何使用?
来源:互联网 发布:java crm项目介绍 编辑:程序博客网 时间:2024/05/22 02:26
thinkphp计划任务使用cronRun
1、先不管是是否是独立分组,必须在你项目名下的Conf文件夹内创建2个文件一个是tages.php 一个是 crons.php。
注意这两个文件名为thinkphp标准文件名,不可以改变
tages.php内容是:
<?php return array( 'app_end'=>array('CronRun'), // 定时任务,thinkphp固定名称,不可以改变 ); ?>
crons.php内容是
<?php return array( 'cron_1' => array('recommend', 60), //这里的意思是每隔60秒,执行一次recommend.php文件 ); ?>
2、在项目命的Lib文件夹内,新建一个文件夹Cron,然后再在Cron里面创建recommend.php文件,我们在recommend.php文件里面写需要执行的内容。直接写PHP代码就可以
recommend内容是
<?phpecho "欢迎光临本站,现在时间是:".date('Y-m-d H:i:s',time()."--定时任务demo"); ?>
3、结果:
您好,欢迎光临本站,现在时间是:2014-05-16 10:33:49
该文字显示在网站的所有页面,但是不能刷新浏览器页面
实际开发中,可以再任务脚本中调用远程数据,执行PHP支持的功能操作等。
1.定时任务行为文件CronRunBehavior.class.php的使用,请到thinkphp官网下载。
这里笔者入口文件定义的扩展文件目录是:define('EXTEND_PATH', APP_PATH . 'Extend/');所以定时任务行为文件拷贝至:app/Extend/Behavior/CronRunBehavior.class.php
2.在Config目录下定义任务配置文件crons.php(注意此名称为硬编码,名称必须是crons.php)
这个定时任务配置文件之所以要这么配置,可参考CronRunBehavior.class.php源码得知:
if(is_file(RUNTIME_PATH.'~crons.php')) {
$crons = include RUNTIME_PATH.'~crons.php';
}elseif(is_file(CONF_PATH.'crons.php')){
$crons = include CONF_PATH.'crons.php';
}
另外,这里的Config目录,默认是项目下的Config目录,默认指定方式的源码是:
defined('CONF_PATH') or define('CONF_PATH', APP_PATH.'Conf/'); // 项目配置目录
如果我们在入口文件index.php有指定的配置目录,则应是入口文件定义的目录:
例如:
define('CONF_PATH', 'myapp/config/');
crons.php的文件内容如下:
return array(
'cronname'=>array('filename',intervals,nextruntime),...
);
* cronname是任务名称,主要是日志记录使用,好知道执行了哪些任务
* filename是脚本文件名,全部放在Lib/Cron/下面,
为什么规定放到这个目录,可参考CronRunBehavior.class.php源码:
include LIB_PATH.'Cron/'.$cron[0].'.php';
即解析为:include 'app/lib/filename.php';
filename.php 里面可编写一些需要执行的代码。如自动完成一些数据修改等。
* intervals是任务执行间隔时间,UNIX时间戳类型
* nextruntime是第一次或下一次执行时间 UNIX时间戳类型
3.thinkphp如何启动定时任务呢?
CronRunBehavior.class.php 是thinkphp的行为的一种,必须通过某一种行为方式促发才能执行。
这里我们通过Thinkphp核心包目录Conf/tags.php来配置。
在tags.php里面,我们配置这个选项:'action_begin' => array('CronRun',),
当任何用户访问我们的项目时,必然会先执行action。即促发一个action_begin行为。
这个行为会找到CronRunBehavior.class.php这个文件,并执行里面的run方法。
建议使用者读下这个run方法的执行逻辑。
总结:CronRunBehavior.class.php的定时任务执行并不是精准的,它必须通过行为来促发。
即,如果没有用户访问我们的APP。 那定时任务就不会被促发,也就是说我们设置的intervalsTime
时间,是最小间隔时间。当用户访问我们的APP的时间超过上次定时任务执行的时间差大于intervalsTime时,
才会促发定时任务的实际执行。
本回答由酷城网www.kuucen.com原创,转载请注明出处。
0 0
- thinkphp- CronRunBehavior.class.php如何使用?
- Thinkphp 3.2.1 使用CronRunBehavior.class.php
- thinkphp3.2 CronRunBehavior使用
- thinkphp view.class.php
- ThinkPHP数据分页Page.class.php
- thinkPHP内置模板引擎TagLibHtml.class.php
- thinkphp核心源码注释|Think.class.php
- thinkphp核心源码注释|Storage.class.php
- thinkphp核心源码注释|Route.class.php
- thinkphp核心源码注释|Log.class.php
- thinkphp核心源码注释|Hook.class.php
- thinkphp核心源码注释|DB.class.php
- thinkphp核心源码注释|Controller.class.php
- thinkphp核心源码注释|Cache.class.php
- thinkphp核心源码注释|Build.class.php
- thinkphp核心源码注释|App.class.php
- thinkphp核心源码注释|Disaptcher.class.php
- thinkphp核心源码注释|Taglib.class.php
- Ajax缓存问题怎么解决?
- 客户端获取url返回的值
- SQL%BULK_ROWCOUNT 和SQL%ROWCOUNT的区别
- Line.h
- ERWIN导出SQL 附带注释
- thinkphp- CronRunBehavior.class.php如何使用?
- 随想录(在x86 linux上仿真多核cpu运行)
- java 线程同步:synchronized 关键字
- couldn't open file on client side trying server side
- 情感分析简述
- 今天遇到了Xcode Unknown Class问题
- Android 异步处理
- java猜数字,一个简单的游戏
- php,缓存数据流(标准输出)