生成缓存文件cache file
生成缓存文件cache file
class Test{
public function index(){
$arrConfig = Array(
'name' => 'daicr',
'age' => 24,
'host' => '127.0.0.1',
'port' => 80,
);
$str = $this -> getcachevars(array("config_im_api" => $arrConfig),'ARRAY');
$this->writeToCache('file_name.php',$str,'cache_','./config');
var_dump($str);
}
/**
* @purpose : 字符串处理函数;1、将数组(可以是多维数组)转换成数组样式的字符串;2、将字符串定义为一个常量
* @author : daicr
* @param : 如果传递的$data是数组,则$type传入ARRAY
* @param : 如果传递的$data是字符串,则$type传入STRING
* @return : string $evaluate 返回一个处理好的字符串,' 和 \ 会在前面加一个 \
**/
function getcachevars($data, $type = 'STRING') {
$evaluate = '';
foreach($data as $key => $val) {
if(is_array($val)) {
$evaluate .= "\$$key = ".$this->arrayeval($val).";\n";
} else {
$val = addcslashes($val, '\'\\');
$evaluate .= $type == 'ARRAY' ? "\$$key = '$val';\n" : "define('".strtoupper($key)."', '$val');\n";
}
}
return $evaluate;
}
function arrayeval($array, $level = 0) {
$space = '';
for($i = 0; $i <= $level; $i++) {
$space .= "\t";
}
$evaluate = "Array\n$space(\n";
$comma = $space;
foreach($array as $key => $val) {
$key = is_string($key) ? '\''.addcslashes($key, '\'\\').'\'' : $key; // 将 key 加上一个 ''
if (!is_array($val) && (!preg_match("/^\-?\d+$/", $val) || strlen($val) > 12)) { // /^\-?\d+$/ 匹配数字 或者以 - 开头的数字
$val = '\''.addcslashes($val, '\'\\').'\'';
} else {
if ('\'postcode\'' === $key) { //邮编必须得保存为字符串型
$val = '\''.addcslashes($val, '\'\\').'\'';
}
}
if(is_array($val)) {
$evaluate .= "$comma$key => ".arrayeval($val, $level + 1); // 多维数组递归调用
} else {
$evaluate .= "$comma$key => $val";
}
$comma = ",\n$space";
}
$evaluate .= "\n$space)";
return $evaluate;
}
/**
* @purpose : cache写入函数
* @author : daicr
* @param : string $scriptName 生成的文件名
* @param : string $cacheStr 需要写入的字符串
* @param : string $prefix 前缀
* @param : string $dir 写入路径
* @return : string $evaluate 返回一个处理好的字符串,' 和 \ 会在前面加一个 \
**/
public function writeToCache($scriptName,$cacheStr,$prefix='cache_',$dir){
if(!is_dir($dir)){
mkdir($dir,0777);
}
if($fp = fopen("$dir/$prefix$scriptName", 'w')) {
fwrite($fp, "<?php\n//Cache file, DO NOT modify me!\n".
"//Created on ".date("M j, Y, G:i")."\n\n$cacheStr?>");
fclose($fp);
} else {
exit('Can not write to cache files!');
}
}
}
$test = new Test();
$test -> index();
2018-02-24
生成缓存文件cache file的更多相关文章
- Dubbo java.io.IOException: Can not lock the registry cache file
跑单测用例的时候,以前执行成功的用例,运行时控制台仍然会报 dubbo 相关的错误: Failed to save registry store file, cause: Can not lock t ...
- 网页验证码出不来,读取验证码时出错:javax.imageio.IIOException: Can't create cache file!
版权声明:本文为博主原创文章,仅作为学习交流使用 转载请注明出处 https://www.cnblogs.com/linck/p/10593053.html 今天打开项目时,发现登陆界面的验证码出不来 ...
- If a cache file exists, it is sent directly to the browser, bypassing the normal system execution.
w开启缓存,缓存视图,用于后续请求. https://www.codeigniter.com/userguide3/overview/appflow.html http://codeigniter.o ...
- javax.imageio.IIOException: Can't create cache file!
javax.imageio.IIOException: Can't create cache file! at javax.imageio.ImageIO.createImageInputStream ...
- Android异常之 unable to write jarlist cache file
异常: android开发调试时候不能运行,出现 unable to write jarlist cache file 错误. 解决方法: 1.找到appcompt文件夹如下的位置.
- 解决Warning: unlink(/storage/cache/cache.catalog.language.1556158719): No such file or directory in /system/library/cache/file.php on line 68问题
ytkah在调试opencart项目时提示Warning: unlink(/storage/cache/cache.catalog.language.1556158719): No such file ...
- php实现数据库数据读取生成缓存文件
有些时候我们希望减少对数据库的 查询来提高程序的性能,因为这些数据不是经常变更的,而是会在很长一段时间内都不会变化,因此,我们每连接一次数据库,都会把相应的结果用文件的形式保存 起来.比如对于一个商城 ...
- [UE4]The global shader cache file missing 运行错误解决办法
UE4项目在VS中对项目代码编译时报如错,找了好久在UE4论坛上查到了别人的解决方案,贴出来仅供大家参考. 看到一位开发者解释出错的原因如下: There are a number of build ...
- tomcat Can't create cache file!
) at javax.imageio.ImageIO.write(ImageIO.java:1558) ... 119 more Caused by: java.io.IOException: 系统找 ...
随机推荐
- 变相实现textarea文本域
效果图: html: <div> <form action=""> <div class="ta-div" contentedit ...
- SQL Server索引的执行计划
如何知道索引有问题,最直接的方法就是查看执行计划.通过执行计划,可以回答表上的索引是否被使用的问题. (1)包含索引:避免书签查找 常见的索引方面的性能问题就是书签查找,书签查找分为RID查找和键值查 ...
- error: <item> inner element must either be a resource reference or empty.
FAQ: Android resource compilation failedOutput: /home/cmm/code/AndroidHttpCapture/app/build/intermed ...
- .NetCore 下开发独立的(RPL)含有界面的组件包 (二)扩展中间件及服务
.NetCore 下开发独立的(RPL)含有界面的组件包 (一)准备工作 .NetCore 下开发独立的(RPL)含有界面的组件包 (二)扩展中间件及服 务 .NetCore 下开发独立的(RPL)含 ...
- c++ char数组形式的字符串 与输入输出
1. c风格字符串,和strlen函数 #include "stdafx.h" #include <iostream> using std::cout; using s ...
- redis中实现redis-cli任意目录执行
- Centos7创建CA和申请证书
转载:http://rackie386.blog.51cto.com/11279229/1947999 Centos7.3创建CA和申请证书 openssl 的配置文件:/etc/pki/tls/op ...
- thinkphp 3.1.3 配置debug开启报错
今天配置了一下thinkphp3.1.3 报错 无法加载模块:index 错误位置 FILE: D:\phpStudy\WWW\wwqq\thinkphp\Common\functions.php L ...
- Vijos1755 靶形数独 Sudoku NOIP2009 提高组 T4 舞蹈链 DLX
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目(传送门) 题意概括 给出一个残缺的数独,求这个数独中所有的解法中的最大价值. 一个数独解法的价值之和为每个位置所填的数值 ...
- js去掉前后空格
//去前后空格 data=data.replace(/(^\s*)|(\s*$)/g, "");