phpruntime
‘壹’ php如何实现定时任务,php定时任务方法,最佳
PHP制作定时任务(也称计划任务)的方法,大概分为2种:
现在基本所有的PHP框架,如:ThinkPHP,Yii,Laravel等等;它们都是单入口的形式,也就是说所有的请求都集合到index.php中,然后再由框架核心来根据请求参数的不同来分配到不同的控制器当中。基于单入口的形式,那么就可以做基于行为(例如TP3.2)或者说基于事件的定时任务。
系统自动的定时任务,比如Linux的crontab,windows的计划任务等。
两中方法各有所长各有所短
基于事件:这种利用的是框架本身提供的一些行为来实现,优点是:不需要特殊配置,只要项目能跑起来,那么定时任务也能执行。缺点是:灵活性比较差,必须要借助框架实现。
基于系统:基于操作系统来实现,优点是:灵活性很高,而且可控性也很好。缺点是:需要特殊配置,专业要求性比较强。
具体要使用哪种方法,可以依据自己的能力和项目需要来选择。最后附上TP3.2的定时任务配置,这个只需要配置就可以,如果想查看具体实现原理,可以查看/ThinkPHP/Library/Behavior/CronRunBehavior.class.php
第一步:/Application/Common/Conf目录下新建两个文件:
分别如:
/Application/Common/Conf/tags.php
/Application/Common/Conf/crons.php
1)新建tags.php,编辑内容如下:
returnarray(
'app_end'=>array('BehaviorCronRunBehavior'),
);
2)新建crons.php,编辑内容如下:
returnarray(
'cron_1'=>array('myplan',1),
);
第二步:/Application/目录下新建Cron文件夹,里面新建文件myplan.php文件
路径如:/Application/Cron/myplan.php
编辑内容如下:
echo11111;
查看是否运行成功,最简单的方法是查看/Application/Runtime/~crons.php,这个文件是否存在。
‘贰’ thinkphp中的runtime是什么问价
编译缓存的基础原理是第一次运行的时候把核心需要加载的文件去掉空白和注释后合并到一个文件中,第二次运行的时候就直接载入编译缓存而无需载入众多的核心文件。当第二次执行的时候就会根据当前的应用模式直接载入编译过的缓存文件,从而省去很多IO开销,加快执行速度。
项目编译机制对运行没有任何影响,预编译机制只会执行一次,因此无论在预编译过程中做了多少复杂的操作,对后面的执行没有任何效率的缺失。
编译缓存文件默认生成在应用目录的Runtime目录下面,我们可以在Application/Runtime目录下面看到有一个common~runtime.php文件,这个就是普通模式的编译缓存文件。如果你当前运行在其他的应用模式下面,那么编译缓存文件就是:应用模式~runtime.php
例如,如果你当前用的是SAE模式,那么生成的编译缓存文件则会变成sae~runtime.php。
普通模式的编译缓存的内容包括:系统函数库、系统基础核心类库、核心行为类库、项目函数文件,当然这些是可以改变的。
‘叁’ ThinkPHP,删了几回~runtime.php以后不在出现了……
~runtime.php是TP的编译缓存文件,是ThinkPhp自动进行的工作。一般来说,这个文件可以直接删除,并不影响项目的运行。
编译缓存文件默认生成在项目的Runtime目录下面,我们可以在App/Runtime目录下面看到有一个~runtime.php文件,这个就是编译缓存文件。
如果你使用了模式扩展的话,编译缓存文件名称可能会有所变化,例如,如果你当前用的是REST模式,那么生成的编译缓存文件则会变成~rest_runtime.php。
注意:环境改变后需要删除编译缓存文件,也就是说你不能把本地生成的编译缓存拷贝到服务器或者其他环境直接使用。
‘肆’ thinkphp框架删除了runtime文件夹之后,怎么还是没删除缓存呢
thinkphp默认生成的缓存是在runtime文件夹里,要是还是有缓存有二种可能:
一:你的浏览器缓存;
二:配置文件修改缓存目录到其他文件夹;