thinkphp字段缓存
‘壹’ 如何开启thinkphp的debug调试模式
开启debug调试模式,只需要主入口文件里面定义一个常量。
define(‘APP_DEBUG’,TRUE); //开启调试模式
然后在配置文件config.php里面定义一个参数开启页面trace显示信息,如下
‘SHOW_PAGE_TRACE’ =>true, //开启页面Trace
这样就已经配置好了,开启调试模式后项目会去加载thinkphp核心包的Conf目录下面的默认的debug.php文件,你也可以在你的项目配置目录下面自定义一个debug.php,这样就可以覆盖核心包里面的默认文件了,我们来看下默认的debug.php都是配置一些什么参数
return array(
'LOG_RECORD'=>true, // 进行日志记录
'LOG_EXCEPTION_RECORD' =>
true, // 是否记录异常信息日志
'LOG_LEVEL' =>
'EMERG,ALERT,CRIT,ERR,WARN,NOTIC,INFO,DEBUG,sql',// 允许记录的日志级别
'DB_FIELDS_CACHE'=> false, // 字段缓存信息
'APP_FILE_CASE' => true, // 是否检查文件的大小写 对Windows平台有效
'TMPL_CACHE_ON' =>
false, // 是否开启模板编译缓存,设为false则每次都会重新编译
'TMPL_STRIP_SPACE' =>
false, // 是否去除模板文件里面的html空格与换行
'SHOW_ERROR_MSG' =>
true, // 显示错误信息
);
里面的参数都是可以自己定义的,里面有一个APP_FILE_CASE检查文件名大小写很重要,也就是在windows下面模拟linux平台,因为linux环境是区分文件名大小写的,而现在很多的php虚拟主机都是linux环境的,所以开启这个参数对我们跨平台移植有很大的帮助的,当开启调试模式和页面trace的时候,再去display一个模板看看页面有什么不一样
‘贰’ ThinkPHP 3.1.2璋冭瘯妯″纺寮钖链変粈涔堢敤
ThinkPHP链変笓闂ㄤ负寮鍙戣繃绋嬭岃剧疆镄勮皟璇曟ā寮忥纴寮钖璋冭瘯妯″纺钖庯纴浼氱压鐗蹭竴瀹氱殑镓ц屾晥鐜囷纴浣嗗甫𨱒ョ殑鏂逛究鍜岄櫎阌椤姛鑳介潪甯稿煎缑銆
璋冭瘯妯″纺镄勪紭锷垮湪浜庯细
寮钖镞ュ织璁板綍锛屼换浣曢敊璇淇℃伅鍜岃皟璇曚俊鎭閮戒细璇︾粏璁板綍锛屼究浜庤皟璇曪绂
1銆佸叧闂妯℃澘缂揿瓨锛屾ā𨱒夸慨鏀瑰彲浠ュ嵆镞剁敓鏁堬绂
2銆佽板綍SQL镞ュ织锛屾柟渚垮垎鏋怱QL锛
3銆佸叧闂瀛楁电紦瀛桡纴鏁版嵁琛ㄥ瓧娈典慨鏀逛笉鍙楃紦瀛桦奖鍝嶏绂
4銆佷弗镙兼镆ユ枃浠跺ぇ灏忓啓锛埚嵆浣挎槸Windows骞冲彴锛夛纴甯锷╀綘鎻愬墠鍙戠幇Linux閮ㄧ讲鍙鑳藉艰嚧镄勯殣鎭i梾棰桡绂
5銆侀氲繃椤甸溃Trace锷熻兘镟村ソ镄勮皟璇曞拰鍙戠幇阌栾锛
‘叁’ thinkphp 怎么开启 Trace
页面Trace功能无论是调试模式还是部署模式都有效,要开启页面Trace功能,需要在项目配置文件中设置:
'SHOW_PAGE_TRACE' =>true, // 显示页面Trace信息
以上出自手册。
配置文件默认是在conf下。如果有分组,每个分组可以单独配置。
如果没生效,告知目录结构和配置文件内容。
TRACE_EXCEPTION配置项是什么意思,没用过。
请描述目录结构和分组情况。
查看配置中有无冲突。
‘肆’ thinkphp怎么开启调试模式
thinkphp开启调试模式的方法:
1、开启调试模式,首先在入口文件打开调试开关:
//开启调试模式
define('APP_DEBUG',true);
2、然后需要配置调试文件,该文件位于项目配置目录下,默认名字为 debug.php:
<?php
return array(
// 开发环境配置信息
'DB_TYPE' =>'mysql',
'DB_HOST' =>'localhost',
'DB_NAME' =>'mydb',
'DB_USER' =>'root',
'DB_PWD' =>'root123',
'DB_PORT' =>'3306',
'DB_PREFIX' =>'my_',
);
?>
配置完调试配置文件之后,调试模式就配置成功了。
3、在 Index 模块的 index 操作写入如下测试代码:
public function index(){
$Dao = M('User');
$user_list = $Dao->select();
$this->display();
}
4、在页面上虽然没有做任何逻辑输出,但是却有系统调试信息,下面是页面 Trace 信息截图:
‘伍’ PHP缓存技术的PHP缓存类型
1、数据库数据缓存技术:
数据缓存:这里所说的数据缓存是指数据库查询PHP缓存机制,每次访问页面的时候,都会先检测相应的缓存数据是否存在,如果不存在,就连接数据库,得到数据,并把查询结果序列化后保存到文件中,以后同样的查询结果就直接从缓存表或文件中获得。
用的最广的例子看Discuz的搜索功能,把结果ID缓存到一个表中,下次搜索相同关键字时先搜索缓存表。和memcache技术。
举个常用的方法,多表关联的时候,把附表中的内容生成数组保存到主表的一个字段中,需要的时候数组分解一下,这样的好处是只读一个表,坏处就是两个数据同步会多不少步骤,数据库永远是瓶颈,用硬盘换速度,是这个的关键点。
常用的数据库数据缓存技术有:
1.序列化(串行化)缓存
2.JSON缓存
3.XML缓存
4.Array缓存
2、页面缓存:
每次访问页面的时候,都会先检测相应的缓存页面文件是否存在,如果不存在,就连接数据库,得到数据,显示页面并同时生成缓存页面文件,这样下次访问的时候页面文件就发挥作用了。(模板引擎和网上常见的一些PHP缓存机制类通常有此功能,例如smarty模板、thinkphp框架)
‘陆’ php 怎么做浏览量的统计用的是thinkphp框架
可以提供简单的方法:(基于你用的是tp,对于做cache缓存也不影响统计,毕竟是访问了控制器方法)
第一:当访问这个页面的时候,对应的有控制器,在控制器中做一个操作,每被访问这个页面一次给数据库那个字段加1(这个不精准)
第二:获取访问页面人的ip地址,在数据库存记录,每此访问此页面也就是控制器 就做同样的操作,前提是判断这个人的ip是否存在,存在证明已访问过。(稍微精确点)
当然还有不少其他的方法,这里是比较简单的。希望可以帮助到
‘柒’ ThinkPHP 3.2 版本升级了哪些内容
3.2.3更新日志
[新增] 增加index连贯操作方法,用于数据集的强制索引操作
[新增] Model类增加using连贯操作用于多表操作
[新增] 增加strict连贯操作,用于设置数据写入和查询是否严格检查是否存在字段 默认情况下 不合法数据字段自动删除,如果设置了严格检查则会抛出异常。 例如: $model->strict(true)->add($data);
[新增] 增加fetchSql连贯操作
[新增] 添加yaml_parse_file()函数,解析yaml文件返回一个数组
[新增] 增加memcache Session驱动
[新增] 增加聚合模型,方便一对一的关联数据表操作
[新增] 新增TMPL_PATH常量支持 可以全局改版模板目录到模块目录之外
[新增] 增加Lite模式Db类,仅支持原生SQL操作
[新增] 数据库调试增加单独的配置参数 DB_DEBUG(如未设置依然取调试模式常量 APP_DEBUG)
[新增] 新增框架核心葡萄牙语言包
[新增] 增加COOKIE_SECURE和COOKIE_HTTPONLY配置参数
[新增] MySQL驱动增加ON DUPLICATE KEY UPDATE功能
[改进] Db类和数据库驱动类完全基于PDO重写
[改进] 添加全局过滤机制(默认关闭)
[改进] I函数增加修饰符功能和正则检测支持
[改进] 采用主从分布式数据库时,从数据库连接失败自动连接主服务器
[改进] 增加Model类对复合主键的支持
[改进] 改进Mongo模型和驱动类,使用更加方便
[改进] 改进session函数删除操作支持数组
[改进] 改进session函数对多维赋值的支持
[改进] 改进数据库字段缓存的文件标识 加上数据表前缀,避免不同前缀的表产生混淆
[改进] 针对数据库视图无主键的问题,使用默认id作为主键,与未开启DB_FIELDS_CACHE时行为一致
[改进] SAE模式惯例配置增加上传驱动设置
[改进] 改进参数绑定机制
[改进] 确保使用参数绑定后日志中生成sql语句的准确性
[改进] 模型类的setInc和setDec方法支持延迟写入,同时取消高级模型的相关方法
[改进] 日志写入的时候自动创建目录
[改进] 改进SQL缓存
[改进] 优化缓存队列功能
[改进] 路由的请求类型定义不区分大小写
[改进] 数据库驱动增加通用insertAll方法支持
[改进] 完善 url的验证正则
[改进] 单字母函数返回值类型修正以及一些拼写错误修正
[改进] 自动创建模型模块的父目录 直接调用\Think\Build::buildController和buildModel的情况下创建目录
[改进] 日志驱动增加自动目录创建支持
[改进] 自动生成的目录结构增加模块的缓存目录
[改进] mysql存储过程支持完善
[改进] Db类改进对多表更新和删除的支持,多表删除支持USING和JOIN操作
[改进] 改进parseLock的位置
[改进] Db类的update和delete方法增加多表操作的支持
[改进] 改进CURD操作 可以直接返回sql语句而不真正执行。
[改进] 插件控制器的命名空间可定义 不再局限于模块下面 增加 ADDON_PATH 用于定义插件目录 默认位于 应用目录下面的Addon
[改进] 改进静态缓存读取的有效判断对sae的支持
[改进] 日志目录分模块
[改进] 模型类的getField方法改进 支持在字段名中使用函数
[改进] 改进Db类的parseWhere方法
[改进] 改进模型的page和limit方法 改进分页类
[改进] 改进配置文件自动生成
[改进] 完善ShowPageTraceBehavior一处函数调用大小写规范
[改进] U函数支持多级控制器
[改进] send_http_status函数增加状态
[改进] 允许在项目中定义 APP 常量
[改进] 改进定义TMPL_PATH后的模板路径定义
[改进] Image类的imagick驱动save方法增加quality参数 用于图片质量设置,默认值为80
[改进] 改进Image类的JPEG图片生成质量
[改进] Gd库驱动类改进
[改进] 改进T函数对TMPL_PATH常量定义的支持
[改进] 改进I函数对path.0的支持
[改进] 改进关联模型
[改进] 改进dispatch_jump模板
[改进] 更新api模式支持配置文件的后缀定义
[改进] 改进Model类的getModelName方法对多层模型的支持
[改进] 改进cookie函数对secure和httponly的支持
[改进] 改进模板标签对命名空间的支持,写法 {$var|Org\Util\String::rand}
[改进] 改进数据表自动识别规则正则规则 可以正确识别带有数字的数据表
[改进] Model类的cache方法使用改进 cache(10) 等同于 cache(true, 10)
[修正] 修正ShowRuntime行为扩展
[修正] 修正Model类的add和addall方法中的_facade和_parseOptions的调用顺序问题
[修正] 修正使用数组方式动态指定表名后的BUG
[修正] 修正ChromShowPage行为扩展
[修正] 修正自定义公共模块路径时,加载公共模块类库失败
[修正] 修正参数绑定的一处判断
[修正] 解决PDO参数绑定后的获取最终SQL语句问题
[修正] 修正开启布局后show方法的问题
[修正] 解决调用trace()无法返回trace日志问题
[修正] 修复mongo出现错误输出的问题
[修正] 修正页面Trace的日志保存
[修正] 修正Model类的save方法
[修正] 修正令牌验证没有设置TOKEN_NAME的问题
[修正] 修复RestController中请求资源类型总是为html的bug
[修正] 修正Model类的getField方法的一处变量冲突问题
[修正] 修正Mongo驱动的page处理
[修正] 修正 extract方法 在分解变量的时候 可能导致变量被覆盖的问题
[修正] 修正Imagick类库
[修正] 修正页面trace插件开启PAGE_TRACE_SAVE后出错的问题
[修正] 修正controller方法 对不使用命名空间的支持
[修正] 修正Image类的save方法支持图片质量
[修正] 修正高级模型的乐观锁功能
[修正] 修正I函数通过FILTER_VALIDATE_EMAIL方式传入常量过滤的一处错误 并且过滤参数支持数组
[修正] 修正GIF类的架构函数
[修正] Cache类一处常量错误修正
[修正] 修改自动生成的配置文件支持CONF_EXT定义
[删除] 去掉多余的URL_404_REDIRECT配置参数
3.2.2 更新日志
[增加]配置文件增加yaml/json/xml/ini/自定义格式支持
[增加]增加load_config函数用于加载配置文件
[增加]增加CONF_EXT和CONF_PARSE常量,用于定义配置文件后缀及解析方法
[增加]模块增加状态配置文件
[增加]cookie函数增加httponly参数支持
[增加]增加COOKIE_HTTPONLY配置参数
[增加]增加插件的控制器访问支持
[增加]增加CONTROLLER_PATH常量用于定义控制器的命名空间路径
[增加]添加VAR_ADDON配置参数 用于设置默认的插件控制器命名空间变量
[增加]dispatcher类增加getSpace方法用于获取控制器的命名空间路径
[增加]I函数增加path和data类型变量的用法
[增加]引入composer支持(还需要完善)
[增加]xcahe和wincache驱动增加clear方法
[增加]自动生成机制支持多个模块的控制器和模型类的批量生成
[修正]修正上传类不能动态改变rootPath的BUG
[修正]修正RestController类的执行顺序
[修正]修正Model类的参数绑定的一处BUG
[修正]修正CronRun行为扩展一处错误
[修正]修正GIF类
[修正]修正rest控制器的encodeData方法
[修正]修正ViewModel可能因空格导致Order方法错误的bug
[修正]修正MongoModel类的写入数据的自增获取
[修正]修正第三方模板引擎驱动类
[修正]修正自动加载可能的一处导致重复加载的问题
[修正]修正__CONTROLLER__ 在URL不区分大小写情况下的获取
[修正]修正Route类中请求类型判断错误的bug
[修正]修正mysqli驱动的free方法
[改进]改进CronRun行为扩展
[改进]TOKEN_NAME 未设置时使用默认值__hash__
[改进]模类的_after_insert回调返回false后直接返回
[改进]Model类的save方法 如果data为空则不执行
[改进]Model类的delete方法 如果条件为空 则不执行删除操作
[改进]改进获取模块方法,支持驼峰法模块命名
[改进]改进模型的查询方法对表前缀的支持,使用当前模型设置的表前缀
[改进]视图模型的视图定义中的_table属性和关联模型中的relation_table 支持 __TABLE_NAME__定义方式
[改进]Model类的query和execute方法支持 __TABLE_NAME__定义方式
[改进]改进PDO驱动对pgsql字符转义的支持
[改进]改进Cookie函数对名称中包含“.”的支持
[改进]改进Sae上传驱动 增加file['url']信息存储
[改进]Page类添加默认的listRows值
[改进]改进IS_CGI常量的判断,支持fcgi
[改进]改进Db类的multiConnect方法 避免切换数据库的时候 配置数据被缓存
[改进]改进Db类对传入的参数 如果未设置数据编码,设置默认的编码为utf8
[改进]改进B方法支持对行为和扩展类的调用,需要传入完整的类名
[改进]改进验证码类 添加验证成功后是否重置session的参数 reset 默认为true
[改进]改进session和cookie函数,支持获取全部
[改进]调试模式下,错误的查询条件和非法数据写入会抛异常
[改进]改进Model类的getField方法
[调整]设置VIEW_PATH后参数后无需再定义模块子目录
[调整]为了避免和函数规则冲突,规则路由排除分隔符改为“-”
3.2.1 更新日志
[增加] 增加Rpc控制器支持
[增加] 添加原来的部分扩展类库
[增加] 增加RestController
[增加] 添加Boris行为扩展
[增加] 增加Boris第三方类库
[增加] 增加BIND_MODULE BIND_CONTROLLER BIND_ACTION 常量定义 用于在入口文件中绑定
[增加] 增加 mole_check 标签位
[增加] 增加buildLite行为 用于根据当前环境生成运行时lite文件 可以替换框架入口文件运行,提高效率
[增加] Think类增加getMap方法
[增加] C函数增加默认值功能 可以是获取配置参数的时候,当没有定义的时候获取传入的默认值
[增加] 增加Yar扩展支持
[增加] 添加jsonRPC扩展
[增加] 增加Api应用模式扩展和Mode扩展目录
[增加] 添加第三方模板引擎
[增加] 支持操作方法绑定到类
[增加] 增加Think\Auth类
[增加] 增加Hprose控制器和第三方类库包
[增加] 增加CONF_PATH常量定义
[增加] 应用和模块增加自动读取当前应用模式配置文件的功能
[修正] 修正正则路由的一个函数处理的bug
[修正] 修正模板引擎类的一处bug
[修正] 修正L函数的一处错误
[修正] 修正驱动类一处错误
[修正] 修正MongoModel一处错误
[修正] 修正Verify类对多个验证码同一个页面显示的bug
[修正] 修正找不到Log类的错误
[修正] 修正模型类的一处bug
[修正] 修正session函数一处警告错误
[修正] 修正U函数的一处警告错误
[修正] 修正compile函数的一处bug
[修正] 修正验证码的背景图片功能
[修正] Think\Image类常量修正
[修正] 修正Image类的架构方法错误
[修正] 修正Mongodb数据库驱动
[修正] 修正trace方法在CLI下面中文输出乱码
[修正] 修正控制器类当调用不存在的方法的报错
[改进] 改进操作方法的名称识别
[改进] 改进数据库驱动 支持不同的链接指定不同的charset参数
[改进] 改进get_client_ip函数
[改进] 改进L函数支持传入变量
[改进] 改进PDO驱动 当版本低于PHP5.3.6的时候禁用模拟预处理语句
[改进] 调整dispatcher类的模块、控制器和操作名获取方法
[改进] 页面trace扩展CLI下面不执行
[改进] 优化trace方法
[改进] 解决因配置文件加载顺序错误导致在SAE环境中运行出错的问题
[改进] 改进Storage类
[改进] 优化load_ext_file函数
[改进] Behavior类简化(下一版本可能会废弃)
[改进] 核心行为类简化取消对Behavior的继承
[改进] C函数并入系统函数库文件
[改进] union连贯操作方法 字符串用法支持 TABLE_NAME 方式替换
[改进] 改进Jion和table连贯操作方法,当使用TABLE_NAME解析的时候支持动态指定的表前缀
[改进] 优化U函数
[改进] 路由类改进
[改进] 改进路由的闭包支持 闭包函数如果返回布尔值 则继续执行后续 否则中止执行
[改进] 应用模式定义文件移动到MODE_PATH目录下面 便于管理
[改进] 默认URL不区分大小写
[改进] 改进路由闭包定义
[改进] 改进路由的额外参数传入
[改进] 重写查询缓存功能
[改进] 关联模型修改
[改进] Image类水印生成支持透明度参数
[改进] 改进Image驱动
[改进] 验证码类改进
[改进] 改进上传类及驱动
[改进] session驱动类接口改进 无需定义execute方法
[改进] 静态缓存仅在get请求下生效
[改进] 改进静态缓存行为
[改进] 语言文件更新
[改进] Storage类的SAE驱动更新
[改进] 英文语言包修正
[改进] 改进PDO驱动
[改进] 默认生成的测试控制器规范改进
[删除] 废除APP_FILE_CASE参数配置 改为Windows下调试模式自动开启区分大小写