mysql性能排查和优化_mysql性能的检查和优化方法

用的服务器配置较差,而且只有一台和其他东西公用的WEB服务器和一台公用的数据库服务器,有没有足够的内存装memcached,没办法只好把数据缓存在硬盘上,稍微减轻一下减轻数据库的负担。只好这样: 把一些数据缓存在硬盘上,稍微缓解一下服务器的压力。

这是我写的一个缓存类的代码(附件中有下载),把数据以数组的格式缓存在硬盘上,稍微减轻一些服务器的压力。其实这个东西有一些配置文件性质的,以后慢慢改进吧!

/**--------------------------------------------------------*

*     JBUF 1.0.0   Jeff Jing  All Rights reserved         *

**--------------------------------------------------------*

* @author:      景银振

* @Date:        2009-10-24 18:36:24

* @Version:     1.0.0

* @Description: Buffering data as array into harddisk

*

* */

//保留署名权,请尊重劳动成果

require_once("include/common.php");

error_reporting(E_ALL);

$cache_dir="cache/buffer/"; // 配置项: 缓存目录

$cache_file='main.buf';    // 配置项:缓存文件名  (其实可以考虑两个参数和起来)

class JBUF{

public static function set($key,$value,$expire,$force=false){

/**

*  Description: 设置缓存

*  参数:

*   $key    缓存项主键

*   $value  缓存的值

*   $expire 有效期,以秒为单位,如果写0,则永不过期

*   $force  是否强制写入,默认为false当缓存中有相同主键没有过期的缓存返回false 否则强制覆盖

*

*/

global $cache_file;

global $cache_dir;

@$str=getFileContent($cache_file,$cache_dir); // 获取缓存文件内容

eval(strip_tags($str));

if($buffer[$key] && !$force){ // 缓存存在且没有强制覆盖

$row=$buffer[$key];

if($row['expire']=='never' || date("Y-m-d H:i:s",strtotime($row['expire']))

return false;

}

}

$row['data']=$value;

$row['expire']=($expire==0)?'never':date('Y-m-d H:i:s',strtotime(date('Y-m-d H:i:s'))+$expire);

$buffer[$key]=$row;//'$buffer='.arr2str($arr).";"

writefile($cache_file, '$buffer='.arr2str($buffer).";",$cache_dir); //

unset($buffer); //释放变量

unset($str); // 释放变量

return true;

}

public static function get($key){

/**

*  Description: 查找缓存

*  参数:

*   $key    缓存项主键

*/

global $cache_file;

global $cache_dir;

@$str=getFileContent($cache_file,$cache_dir);// 读取数据

eval(strip_tags($str));

if($buffer[$key]){

$row=$buffer[$key];

if($row['expire']=='never' || date("Y-m-d H:i:s",strtotime($row['expire']))

return $row['data'];

} else { // 已过期,清空该项并返回null

unset($buffer[$key]);

writefile($cache_file, '$buffer='.arr2str($buffer).";",$cache_dir);

return null;

}

}else{

return null; //不存在直接返回null

}

}

public static function clear(){

/**

*  Description: 清除所有缓存,删除缓存文件即可

*

*/

global $cache_file;

global $cache_dir;

if(file_exists($cache_dir.$cache_file)){

unlink($cache_dir.$cache_file);

}

}

}

function arr2str($arr){

/**

*  Description: 将数组转为字符串

*  Date:         2009-10-24

*/

if(is_array($arr)){

$str="array(";

foreach ($arr as $key=>$value){

$str.=("'".$key."'=>".arr2str($value).",");

}

$str=substr($str,0,strlen($str)-1);

$str.=")";

return $str;

}else{

return "'".$arr."'";

}

}

?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值