缓存1 静态缓存-->读库保存成php文件 mkdir-->file_put_contents-->var_export -->include
@mkdir()-->file_put_contents-->$data = "<?php\nreturn ".var_export($setting, true).';' --> $settings[$app] = include($path);
加true,赋值给新变量,不输出,
$data = $this->db->select("SELECT `var`,`value` FROM `$this->table` WHERE `app`=?", array($app));
foreach($data as $v){
$setting[$v['var']] = $v['value'];
}
<?php
function create($structure, $mode = 0755, $force = false)
{
return @mkdir($structure, $mode);
}
//读取数据库,重新遍历.放入一个新数组,
//01创建目录
//02写入文件
create('system');
$setting = "<?php\nreturn ".var_export($setting, true).';'; //php换行.return拼接 所有数组的值
return file_put_contents('./system/setting.php', $setting);
$a = array('var'=>'sitename','value'=>'天山云');
echo '<meta http-equiv="Content-Type" content="text/html; charset=utf-8">';
var_export($a); //原样输出数组,保留大括号,适合file_put_contents 写入文件
echo '<hr>';
var_dump($a); //数组转花括号,下标加了中括号,值加了类型,无法继续给其他php程序使用.适合显示给用户看
array ( 'var' => 'sitename', 'value' => '天山云', ) //var_export($a);
array(2) { ["var"]=> string(8) "sitename" ["value"]=> string(9) "天山云" } //var_dump($a);
主程序中,执行前_before_execute.先把设置数据,从库中读取出来.缓存到cache目录下
$setting = setting('system');
01调用公共方法settin()
02get获取数据--什么静态数组.如果存在直接返回.没有就重新生成缓存
self::getInstance()->cache($app);
使用方法,代替静态对象self::getInstance()
static function getInstance() {//如果没有就新建对象,返回对象
if(!self::$objInstance){
$objInstance = new setting();
}
return $objInstance;
}
03读取数据库,变量好数组.放入新数组中.
04写入php文件,先检查没有目录.先创建目录
数据表
setting表 3个字段
app模块,var属性.value值
文章模块,
评论模块:
敏感词汇:主席,岛国大片
页码:
系统模块
关键词,描述,网站标题,网站url,图片压缩.宽高
如:遇到二维数组.把数组值取出.在eval中赋值给一个变量$newval.执行后.$newval就是数组的值了
foreach ($data as $r)
{
if (substr($r['value'], 0, 5) === 'array') //截取遍历后的值.开头5位是array就是二维数组
{
eval("\$newval = {$r['value']};"); //需要解析二位数组的值(使用花括号),赋值给一个新变量.新变量需要原样保留$,需要反斜杠转义
$setting[$r['var']] = $newval;
}
上面别人的方法.可以不用eval.一样可以达到效果.
都不用判断是否为数组.遍历.放入新数组中.就可以
foreach($data as $v){
$result[$v['var']] = $v['value'];
}
缓存1 静态缓存-->读库保存成php文件 mkdir-->file_put_contents-->var_export -->include的更多相关文章
- tcpdump抓包并保存成cap文件
首选介绍一下tcpdump的常用参数 tcpdump采用命令行方式,它的命令格式为: tcpdump [ -adeflnNOpqStvx ] [ -c 数量 ] [ -F 文件名 ] [ -i 网络接 ...
- ThinkPHP 3.2.3 数据缓存与静态缓存
ThinkPHP 3.2.3 中手册中数据缓存的地址是:http://www.kancloud.cn/manual/thinkphp/1835 静态缓存的地址是:http://www.kancloud ...
- Thinkphp 缓存和静态缓存局部缓存设置
1.S方法缓存设置 if(!$rows = S('indexBlog')){ //*$rows = S('indexBlog') $rows = D('blog')->select(); S(' ...
- thinkphp3.2局部不缓存的静态缓存
在thinkphp中,对于访问量大的网站可以用静态缓存来越过数据库瓶颈来提高访问速度,但有时候并不是整个页面都要缓存的,如登录的用户名部分,那么如何实现局部不缓存呢? 其实有多种方法,但对于Think ...
- opencv::将两幅图像合并后,在同一个窗口显示;并将合并的图像流保存成视频文件
/** * @file main-opencv.cpp * @date July 2014 * @brief An exemplative main file for the use of ViBe ...
- python文件目录遍历保存成xml文件代码
Linux服务器有CentOS.Fedora等,都预先安装了Python,版本从2.4到2.5不等,而Windows类型的服务器也多数安装了Python,因此只要在本机写好一个脚本,上传到对应机器,在 ...
- InputStream流保存成图片文件
public void saveBit(InputStream inStream) throws IOException{ ByteArrayOutputStream outStream = new ...
- Android吧数据保存成xml文件
public class MainActivity extends Activity { private List<Person> persons; @Override protected ...
- SQLServer数据库表架构和数据保存成sql文件
一.先在你的mssql数据库中点击“数据库–>任务–>生成脚本” 二.然后我们会看到有“生成和发布脚本”窗口 下一步 三.选择要编写脚本的数据库对象,全部导出选第一个,如果你想导出部分数据 ...
随机推荐
- adb shell dumpsys
adb shell dumpsys activity activities -- class/packagename adb shell dumpsys batterystate --reset ...
- sf中标准的分页功能介绍
世上本无事,庸人自扰之.我喜欢一个相对比较安静的环境去学习和工作,希望在一个掉一根针的声音都能够听到的环境中,但是有时候往往相反,一片嘈杂,我改变不了周围的环境,只能改变自己,其实这些都没有什么,也许 ...
- DEV TdxLayoutGroup设置tab
TdxLayoutGroup 属性的 LayoutDirection :ldvertical,ldtabbed(显示tab页),ldhorizontal
- TI公司与MSP430单片机
美国德州仪器(Texas Instruments)公司,简称TI,是全球领先的半导体公司,成立于1930 年,成立之初是一家使用地震信号处理技术勘探原油的地质勘探公司,1951年更名为德州仪器公司,1 ...
- “System.BadImageFormatException”类型的未经处理的异常在 PurchaseDevices.Access.dll 中发生 其他信息: 未能加载文件或程序集“System.Data.SQLite, Version=1.0.66.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139”或它的某一个依赖项。试图加载格式不正确
引用sqlite的程序集时,有时会报如下异常: "System.BadImageFormatException"类型的未经处理的异常在 PurchaseDevices.Acces ...
- javascript动画:velocity.js学习
第二章:基础知识 一.velocity和jQuery: Velocity函数是独立于jQuery的,但两者可以结合使用.通常这么做的好处是可以利用jQuery的链式操作:当你先用jQuery选择了一个 ...
- React - Stores
Event emmiters that make data available, handle business logic, send events to React, and listen for ...
- Asp.NET路由管道处理过程 【重要】
当ASP.NET处理请求时,路由管道主要由以下几个步骤组成: 1.UrlRoutingModule尝试使用RouteTable中注册的理由匹配当前请求: 2.如果RouteTable中有一个路由成功匹 ...
- 核心梳理——消息处理的骨架流程——ESFramework 4.0 进阶(02)
在ESFramework 4.0 概述一文中,我们提到ESFramework.dll作为通信框架的核心,定义了消息处理的骨架流程,本文我们来详细剖析这个流程以及该骨架中所涉及的各个组件.ESFrame ...
- Java ZIP打包
File zipFile = IOUtil.createTempFile("zip"); ZipOutputStream zipout = new ZipOutputStream( ...