thinkphp发送邮件 runtime.php有什么用

第一次用THINKPHP 报路径错
我第一次 看网上写的代码:
define('THINK_PATH','Think');
define('App_NAME','43');
define('App_PATH','.');
require(THINK_PATH.'/ThinkPHP.php');
$App=newApp();
$App->run();(这一行可以不要要不然结果会出现两次)
Warning: require(../ThinkPHPCommon/runtime.php) [function.require]: failed to open stream: No such file or directory in D:\web\htdocs\ThinkPHP\ThinkPHP.php on line 36
Fatal error: require() [function.require]: Failed opening required '../ThinkPHPCommon/runtime.php' (include_path='.;C:\php5\pear') in D:\web\htdocs\ThinkPHP\ThinkPHP.php on line 36
查资料看到:
你使用的是 ThinkPHP 3 吧?
关于常量 THINK_PATH 的定义:
ThinkPHP 2.x
define('THINK_PATH', '../ThinkPHP');
ThinkPHP 3.x
define('THINK_PATH', '../ThinkPHP/');
当然你可以不去定义它,ThinkPHP 真的很奇怪,这样重大的改变都不声明一下,难道不打算让人家用它了?
后来还是不行,看来变天才知道 define('THINK_PATH','ThinkPHP');少写了一个/define('THINK_PATH','ThinkPHP/'); 这样就对了.ThinkPHP3.1.3分析(6)
一、示例代码
runtime.php 主要 3个部分,
1、定义系统目录和项目目录
// 路径设置 可在入口文件中重新定义 所有路径常量都必须以/ 结尾
defined('CORE_PATH')
or define('CORE_PATH',
THINK_PATH.'Lib/'); // 系统核心类库目录
defined('EXTEND_PATH')
or define('EXTEND_PATH',
THINK_PATH.'Extend/'); // 系统扩展目录
defined('MODE_PATH')
or define('MODE_PATH',
EXTEND_PATH.'Mode/'); // 模式扩展目录
defined('TEMP_PATH')
or define('TEMP_PATH',
RUNTIME_PATH.'Temp/'); // 项目缓存目录
defined('DATA_PATH')
or define('DATA_PATH',
RUNTIME_PATH.'Data/'); // 项目数据目录
defined('CACHE_PATH')
or define('CACHE_PATH',
RUNTIME_PATH.'Cache/'); // 项目模板缓存目录
2、载入核心类和基础函数库(common.php)
// 加载系统基础函数库
require THINK_PATH.'Common/common.php';
// 读取核心文件列表
$list = array(
CORE_PATH.'Core/Think.class.php',
CORE_PATH.'Core/ThinkException.class.php',
// 异常处理类
CORE_PATH.'Core/Behavior.class.php',
// 加载模式文件列表
foreach ($list as $key=&$file){
if(is_file($file))
require_cache($file);
3、创建项目目录
if(!is_dir(LIB_PATH)) {
// 创建项目目录结构
build_app_dir();
/*Runtime目录不存在则重新创建Runtime目录*/
elseif(!is_dir(CACHE_PATH)){
// 检查缓存目录
check_runtime();
}elseif(APP_DEBUG){
// 调试模式切换删除编译缓存
if(is_file(RUNTIME_FILE))
unlink(RUNTIME_FILE);
最后就是调用 Think.class.php 中的
&Think::Start();
二、值得说的编程小细节:
// 为了方便导入第三方类库 设置Vendor目录到include_path
set_include_path(get_include_path() . PATH_SEPARATOR . VENDOR_PATH);举例: some.class.php 在 &/a/b/c/include 目录下
那么在 引入类文件 include '/a/b/c/include/some.class.php';
如果定义了 &set_include_path('/a/b/c/include');
只需 include 'some.class.php';
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:162728次
积分:3523
积分:3523
排名:第9175名
原创:188篇
转载:42篇
评论:10条
(1)(2)(18)(1)(1)(18)(1)(1)(10)(4)(5)(2)(2)(2)(2)(3)(6)(5)(7)(2)(5)(14)(23)(41)(51)(3)Thinkphp框架怎么理解?刚入门,感觉没有理解框架,求指点。
官网教程倒是挺详细,但没有抽象和理解上的东西。
我想知道,一个页面的实现,经过了哪些过程,涉及了哪些文件。
编译是如何实现的。
如果你要分析这个啊。。照着他的示例写几个小应用运行起来
然后用xdebug之类的断点调试,你不明白得地方
用xhprof去分析他的执行过程
去读源码不就可以了
手册从头到尾部读一遍,有压力的话第一次学习可以略过模型章节,主要读控制器和模板引擎。想知道具体怎么执行的,研究Trace和调试还有扩展这几章。debug模式开启trace显示也能看到每个页面的从头到尾的执行过程。
想要完全 弄懂 弄通 不看源码是不行滴
手册上有ThinkPHP的执行流程,
我们以访问网址 /index.php/User/read/id/8 为例,分两种情况来解析下系统的执行流程,首先是调试模式下面的主要执行流程:
用户访问网站URL地址
调用项目的入口文件(这里是index.php)
载入系统入口文件ThinkPHP.php
判断系统常量,如果没有定义则自动生成
载入系统运行时文件runtime.php并定义项目路径常量
加载运行时所需的文件(通过调用load_runtime_file函数)
后面的流程和调试模式基本相同,只是模板编译过程省略了
读取核心基础文件列表和加载系统别名定义文件
检查项目相关目录是否存在,不存在则自动生成
调用Think::start执行入口
设置异常和错误处理机制
注册系统自动加载机制
预编译当前项目
加载框架惯例配置文件
读取当前的运行模式如果不是标准模式则加载模式的配置文件(如果存在)
加载模式和项目配置文件
加载框架底层语言包文件
加载当前模式的系统行为定义文件
加载当前模式的项目行为定义文件(如果存在)
读取核心编译文件列表
载入项目公共函数文件
加载模式和项目别名定义文件
加载系统调试模式配置文件
加载项目调试模式配置文件(如果存在)
执行当前模式的App::run();运行项目
如果定义了动态载入则载入动态项目配置文件和公共文件
URL调度,根据URL模式设置分析当前URL地址
URL路由检测
获取当前URL地址的分组、模块和操作名&及其他参数并生成URL相关常量定义
如果检测到分组,则加载分组的配置文件和公共文件
检测模板主题并生成模板系统常量
设置SESSION_ID&开启Session
根据分组和模块名,定位到控制器类并且实例化
检查并执行当前操作的前置方法
检查当前模块的_initialize方法
执行当前操作方法
调用控制器的Display方法输出
定位当前操作方法的模板文件
调用模板引擎解析模板内容并生成模板编译缓存文件
读取模板缓存文件进行变量输出,替换解析返回的内容中的需要替换的特殊字符串
生成表单令牌哈希
输出模板内容到浏览器
如果开启页面Trace显示则调用trace信息显示
检查并执行当前操作的后置方法
项目运行结束,记录内存中的日志信息到文件
如果在部署模式下面(假设已经生成项目编译缓存),基本的系统流程是:
用户访问网站URL地址
调用项目的入口文件,如果替换了入口文件,则调用项目编译缓存文件,并跳过下面的3、4、5流程,直接执行后面的流程。
载入系统入口文件ThinkPHP.php
判断系统常量,如果没有定义则自动生成
载入系统运行时文件runtime.php并定义项目路径常量
加载运行时所需的文件(通过调用load_runtime_file函数)
加载系统基础函数库文件common.php
系统执行流程根据不同的设置、行为和模式影响,可能存在差异,并不一定完整。但是开启页面Trace功能后,你就可以比较直观的看到当前的文件载入流程,能够帮助你了解系统的执行流程,例如新版的blog示例在关闭调试模式下面一共加载了20个文件,列表如下:
[0]&=&&E:\www\App\Examples\Blog\index.php
[1]&=&&E:\www\App\ThinkPHP\ThinkPHP.php
[2]&=&&E:\www\App\Examples\Blog\Runtime\~runtime.php
[3]&=&&E:\www\App\Examples\Blog\Lib\Behavior\CheckLangBehavior.class.php
[4]&=&&E:\www\App\Examples\Blog\Lib\Action\BlogAction.class.php
[5]&=&&E:\www\App\Examples\Blog\Lib\Action\PublicAction.class.php
[6]&=&&E:\www\App\ThinkPHP\Lib\Core\Model.class.php
[7]&=&&E:\www\App\ThinkPHP\Lib\Core\Db.class.php
[8]&=&&E:\www\App\ThinkPHP\Lib\Driver\Db\DbMysql.class.php
[9]&=&&E:\www\App\Examples\Blog\Runtime\Data\_fields\examples.Category.php
[10]&=&&E:\www\App\Examples\Blog\Lib\Model\AdvModel.class.php
[11]&=&&E:\www\App\Examples\Blog\Runtime\Data\_fields\examples.Blog.php
[12]&=&&E:\www\App\Examples\Blog\Runtime\Data\_ment.php
[13]&=&&E:\www\App\Examples\Blog\Runtime\Data\_fields\examples.Tag.php
[14]&=&&E:\www\App\Examples\Blog\Lib\Model\BlogViewModel.class.php
[15]&=&&E:\www\App\Examples\Blog\Lib\Model\ViewModel.class.php
[16]&=&&E:\www\App\Examples\Blog\Lib\Model\BlogModel.class.php
[17]&=&&E:\www\App\Examples\Blog\Lib\Model\CategoryModel.class.php
[18]&=&&E:\www\App\Examples\Blog\Lib\ORG\Page.class.php
[19]&=&&E:\www\App\Examples\Blog\Runtime\Cache\2ab73b774a28fabb654018.php
见/manual/system_process.html
学tp看手册,看示例,看官网教程,加入群 讨论
那破框架还有人用?
--- 共有 9 条评论 ---
有必要这样喷吗?有本事你去提交建议,你去写一个比他强的。
不能说破吧 只能说 有很多框架比他优秀太多
: 从没帮过我,也从没用过,只是大致看了下代码.
别有了新朋友就忘了老朋友
曾经是谁帮助了你
以前觉得很牛,现在觉得很垃圾,还是基于php5.2,闭包也没有,用过laravel之后发现thinkphp的代码真的很破,laravel用很少量的代码就能实现他的功能.而且代码简洁明了.而且laravel的model层也是非常的优秀.Object-relational mapping,对象关系映射的思想.用起来要比thinkphp的model要好多了.
用它开发几次,你就对它了解了。
--- 共有 1 条评论 ---
了解没用,主要是代码垃圾了,和laravel没法比.
除了官网做的漂亮点,文档做的好点,我真的看不出还有什么别的优点.
谢谢各位的回答。
随便拉一个框架出来,都比那框架好ThinkPHP实现一键清除缓存方法
投稿:shichen2014
字体:[ ] 类型:转载 时间:
这篇文章主要介绍了ThinkPHP实现一键清除缓存方法,需要的朋友可以参考下
很多的开源cms系统都有一键清除缓存的功能,缓存是为了减轻服务器的压力而产生的,但是同时有缓存的存在也可能使一些数据不能实时更新,对此,我们就来实现一个ThinkPHP的清理缓存的功能。代码如下:
ThinkPHP后台执行的代码:
//获取要清楚的目录和目录所在的绝对路径
public function cache(){
////前台用ajax get方式进行提交的,这里是先判断一下
if($_POST['type']){
//得到传递过来的值
$type=$_POST['type'];
//将传递过来的值进行切割,我是用“-”进行切割的
$name=explode('-', $type);
//得到切割的条数,便于下面循环
$count=count($name);
//循环调用上面的方法
for ($i=0;$i&$$i++){
//得到文件的绝对路径
$abs_dir=dirname(dirname(dirname(dirname(__FILE__))));
//组合路径
$pa=$abs_dir.'indexRuntime';
$runtime=$abs_dir.'indexRuntime~runtime.php';
if(file_exists($runtime))//判断 文件是否存在
unlink($runtime);//进行文件删除
//调用删除文件夹下所有文件的方法
$this-&rmFile($pa,$name[$i]);
//给出提示信息
$this-&ajaxReturn(1,'清除成功',1);
$this-&display();
public function rmFile($path,$fileName){//删除执行的方法
//去除空格
$path = preg_replace('/(/){2,}|{}{1,}/','/',$path);
//得到完整目录
$path.= $fileN
//判断此文件是否为一个文件目录
if(is_dir($path)){
//打开文件
if ($dh = opendir($path)){
//遍历文件目录名称
while (($file = readdir($dh)) != false){
//逐一进行删除
unlink($path.''.$file);
//关闭文件
closedir($dh);
前台页面部分代码如下:
&script type="text/javascript" src="__PUBLIC__/admin/js/jquery.js"&&/script&
&script type="test/javascript"&
$(function(){
$('#button').click(function(){
if(confirm("确认要清除缓存?")){
var $type=$('#type').val();
var $mess=$('#mess');
$.post('__URL__/clear',{type:$type},function(data){
alert("缓存清理成功");
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具}

我要回帖

更多关于 thinkphp发送邮件 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信