PHP常用小函数
Posted in PHP on 2009/11/17 / 评论(0) »
<?php
/**
 * 检查数组是否全是空值
 */
function isEmptyArray($arr) {
    if(
is_array($arr)) {
        foreach(
$arr as $v) {
            if(
isEmptyArray($v) == false) {
                return 
false;
            }
        }
    } else {
        return empty(
$arr);
    }
    return 
true;
}
/**
 * 去除头尾空格和转义
 */
function escape($str,$as true) {
    if(
is_array($str)) {
        foreach(
$str as $key=>$val) {
            
$str[$key] = $this->escape($val,$as);
        }
    } else {
        if(
$as) {
            
$str addslashes(trim($str));
        } else {
            
$str trim($str);
        }
    }
    return 
$str;
}
/**
 * 判断是否有中文字符
 */
function isChinese($word) {
    return 
preg_match ('/[^x0-x7F]/'$word);
}
/**
 * 判断是否是只有中文文字
*/
function isCn($word) {
    return 
preg_match("/^[x{4e00}-x{9fa5}]+$/u"$word);
}
/**
 * 用以代替file_get_contents
 * 需要cURL支持,当连接超时则返回false,不会卡死php页面
 */
function an_get_contents($url$second 5) {
    
$ch    curl_init();
    
curl_setopt($ch,CURLOPT_URL,$url);
    
curl_setopt($ch,CURLOPT_HEADER,0);
    
curl_setopt($ch,CURLOPT_TIMEOUT,$second);
    
curl_setopt($ch,CURLOPT_RETURNTRANSFERtrue);
    
$content    curl_exec($ch);
    
curl_close($ch);
    return 
$content;
}
/**
 * 转换至UTF-8编码
 * 适用于大部分中文情况
 */
function convertToUTF8($str) {
    
$charset mb_detect_encoding($str, array('ASCII','UTF-8','GB2312','GBK','BIG5'));
    if (
$charset!='UTF-8') {
        
$str mb_convert_encoding($str,'UTF-8',$charset);
    }
    return 
$str
}
/**
 * 生成指定范围内指定个数的不重复随机数
 */
function getRand($min$max$num) {
    if(
$max-$min<$num) return false;
    
$res    null;
    
$arr    range($min,$max);
    
shuffle($arr);
    
$rand_keys    array_rand($arr$num);
    foreach(
$rand_keys as $v) {
        
$res[]    = $arr[$v];
    }
    return 
$res;
}
function 
add_page_css($s) {
    
$rs    '';
    if(!
is_array($s)) {
        
$rs    '<link href="res/css/'.$s.'.css" rel="stylesheet" type="text/css" />';
    } else {
        foreach(
$s as $v) {
            
$rs    .= '<link href="res/css/'.$v.'.css" rel="stylesheet" type="text/css" />';
        }
    }
    return 
$rs;
}

function 
add_page_js($s) {
    
$rs    '';
    if(!
is_array($s)) {
        
$rs    '<script type="text/javascript" src="res/js/'.$s.'.js"></script>';
    } else {
        foreach(
$s as $v) {
            
$rs    .= '<script type="text/javascript" src="res/js/'.$v.'.js"></script>';
        }
    }
    return 
$rs;
}
?>
本文参照了
http://rashost.com/blog/centos5-vps-nginx-solution2
http://blog.s135.com/nginx_php_v5/

首先还是换源,换源方法参照http://anerg.cn/read.php?33

先下载nginx和已经编译好的php
wget http://rashost.com/download/centos5-x86_64/nginx-0.7.61-1.x86_64.rpm
wget http://rashost.com/download/centos5-x86_64/php-fpm-5.2.10-x86_64.tar.gz

安装nginx,并加入/etc/init.d/
rpm -ivh nginx-0.7.61-1.x86_64.rpm
chkconfig --list nginx
chkconfig nginx on
/etc/init.d/nginx start

默认nginx的目录是/usr/share/nginx/html/这个我们一会儿再编辑

现在安装mysql
yum install -y mysql-server
chkconfig --list mysqld
chkconfig mysqld on
/etc/init.d/mysqld start

修改你的mysql密码
mysqladmin -u root password 'newpassword'


安装相关库
yum install libxml2-devel libmcrypt-devel openssl-devel curl-devel libjpeg-devel  libpng-devel freetype-devel openldap-devel libmhash-devel mysql-devel  libtool-ltdl-devel

修改mysql的库文件,否则在64位系统下老去找32位的mysql库
mv /usr/lib/mysql /usr/lib/mysql.i386
ln -sf /usr/lib64/mysql /usr/lib/mysql

以下操作都是ssh远程进行的,首先登陆上你的服务器

好了,不管其他的,先换源,默认源太慢了,我用的163的源,很快的
cd /etc/yum.repos.d/
mv CentOS-Base.repo CentOS-Base.repo.bak
vim CentOS-Base.repo

加入以下内容
[base]
name=CentOS-$releasever - Base
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
baseurl=http://mirrors.163.com/centos/$releasever/os/$basearch/
gpgcheck=0
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
  
#released updates
  
[updates]
name=CentOS-$releasever - Updates
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
baseurl=http://mirrors.163.com/centos/$releasever/updates/$basearch/
gpgcheck=0
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
  
#packages used/produced in the build but not released
[addons]
name=CentOS-$releasever - Addons
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=addons
#baseurl=http://mirror.centos.org/centos/$releasever/addons/$basearch/
baseurl=http://mirrors.163.com/centos/$releasever/addons/$basearch/
gpgcheck=0
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
  
#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras
#baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/
baseurl=http://mirrors.163.com/centos/$releasever/extras/$basearch/
gpgcheck=0
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
  
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus
#baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/
baseurl=http://mirrors.163.com/centos/$releasever/centosplus/$basearch/
gpgcheck=0
enabled=0
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5

ok,先更新吧
yum update

然后安装xen以及xen内核
yum install xen kernel-xen

然后修改启动文件使用xen内核启动
vi /etc/grub.conf

将文件中的default改为0,然后reboot重启机器
带缓存数据功能的mysqli类
Posted in PHP on 2009/08/18 / 评论(0) »
<?php
/**
 * Mysqli类
 *
 * @author 废墟
 * @version v1.0 2009-08-18
 * @link http://anerg.cn/
 */
class db_mysqli {
    protected 
$mysqli;
    protected 
$sql;
    protected 
$rs;
    protected 
$query_num    0;
    protected 
$fetch_mode    MYSQLI_ASSOC;
    protected 
$cache_dir    './cache/';
    protected 
$cache_time    1800;

    public function  
__construct($dbhost$dbuser$dbpass$dbname) {
        
$this->mysqli    = new mysqli($dbhost$dbuser$dbpass$dbname);
        if(
mysqli_connect_errno()) {
            
$this->mysqli    false;
            echo 
'<h2>'.mysqli_connect_error().'</h2>';
            die();
        } else {
            
$this->mysqli->set_charset("utf8");
        }
    }
    public function  
__destruct() {
        
$this->free();
        
$this->close();
    }
    protected function 
free() {
        @
$this->rs->free();
    }
    protected function 
close() {
        
$this->mysqli->close();
    }
    protected function 
fetch() {
        return 
$this->rs->fetch_array($this->fetch_mode);
    }
    protected function 
getQuerySql($sql$limit null) {
        if (@
preg_match("/[0-9]+(,[ ]?[0-9]+)?/is"$limit) && !preg_match("/ LIMIT [0-9]+(,[ ]?[0-9]+)?$/is"$sql)) {
            
$sql .= " LIMIT " $limit;
        }
        return 
$sql;
    }
    protected function 
get_cache($sql,$method) {
        include_once 
'./cache.php';//若框架中使用__autoload(),这里可以不用加载文件
        
$cache    = new cache($this->cache_dir,$this->cache_time);
        
$cache_file    md5($sql.$method);
        
$res    $cache->get_cache($cache_file);
        if(!
$res) {
            
$res    $this->$method($sql);
            
$cache->set_cache($cache_file$res);
        }
        return 
$res;
    }
    public function 
query_num() {
        return 
$this->query_num;
    }
    public function 
set_cache_dir($cache_dir) {
        
$this->cache_dir    $cache_dir;
    }
    public function 
set_cache_time($cache_time) {
        
$this->cache_time    $cache_time;
    }
    public function 
query($sql$limit null) {
        
$sql    $this->getQuerySql($sql$limit);
        
$this->sql    $sql;
        
$this->rs    $this->mysqli->query($sql);
        if (!
$this->rs) {
            echo 
"<h2>".$this->mysqli->error."</h2>";
            die();
        } else {
            
$this->query_num++;
            return 
$this->rs;
        }
    }
    public function 
getOne($sql) {
        
$this->query($sql1);
        
$this->fetch_mode    MYSQLI_NUM;
        
$row $this->fetch();
        
$this->free();
        return 
$row[0];
    }
    public function 
get_one($sql) { return $this->getOne($sql); }
    public function 
cache_one($sql) {
        
$sql    $this->getQuerySql($sql1);
        return 
$this->get_cache($sql'getOne');
    }
    public function 
getRow($sql$fetch_mode MYSQLI_ASSOC) {
        
$this->query($sql1);
        
$this->fetch_mode    $fetch_mode;
        
$row $this->fetch();
        
$this->free();
        return 
$row;
    }
    public function 
get_row($sql$fetch_mode MYSQLI_ASSOC) { return $this->getRow($sql); }
    public function 
cache_row($sql) {
        
$sql    $this->getQuerySql($sql1);
        return 
$this->get_cache($sql'getRow');
    }
    public function 
getAll($sql$limit null$fetch_mode MYSQLI_ASSOC) {
        
$this->query($sql$limit);
        
$all_rows = array();
        
$this->fetch_mode    $fetch_mode;
        while(
$rows $this->fetch()) {
            
$all_rows[] = $rows;
        }
        
$this->free();
        return 
$all_rows;
    }
    public function 
get_all($sql$limit null$fetch_mode MYSQLI_ASSOC) { return $this->getAll($sql); }
    public function 
cache_all($sql$limit null) {
        
$sql    $this->getQuerySql($sql$limit);
        return 
$this->get_cache($sql'getAll');
    }
    public function 
insert_id() {
        return 
$this->mysqli->insert_id();
    }
    public function 
escape($str) {
        if(
is_array($str)) {
            foreach(
$str as $key=>$val) {
                
$str[$key] = $this->escape($val);
            }
        } else {
            
$str addslashes(trim($str));
        }
        return 
$str;
    }
}
//用法
$db    = new db_mysqli('localhost''root'111222'dict');
$db->set_cache_time(10);
$db->set_cache_dir('./cache/sql/');
$sql "select * from words order by word_id limit 10,10";
$res1 $db->get_all($sql);
$res2 $db->cache_all($sql);

echo 
$db->query_num(),'<br>';
?>
写了个文件缓存类,记录下
Posted in PHP on 2009/08/14 / 评论(0) »
<?php
/**
 * 文件缓存类
 *
 * @author 废墟
 * @version v1.01 2009-08-18
 * @link http://anerg.cn/
 */
class cache {
    private 
$cache_time;
    private 
$cache_dir;

    public function 
__construct($cache_dir './cache/'$cache_time 3600) {
        
$this->cache_time    $cache_time;
        
$this->cache_dir    $cache_dir;
    }

    public function 
set_cache_dir($cache_dir) {
        
$this->cache_dir    $cache_dir;
    }

    public function 
set_cache_time($cache_time) {
        
$this->cache_time    $cache_time;
    }

    public function 
get_cache($cache_file) {
        
$_CACHE = array();
        
$filename $this->cache_dir.'/'.$cache_file.".cache.php";

        if(!
file_exists($filename) || time() - filemtime($filename) > $this->cache_time) {
            return 
false;
        } else {
            return 
unserialize(file_get_contents($filename));
        }
    }

    public function 
set_cache($cache_file,$data) {
        
$filename $this->cache_dir.'/'.$cache_file.".cache.php";
        if( 
$this->mkpath($this->cache_dir) ) {
            
$out    serialize($data);
            
file_put_contents($filename$out);
        }
    }

    public function 
del_cache($cache_file) {
        return 
unlink($this->cache_dir.'/'.$cache_file.".cache.php");
    }

    public function 
mkpath($dir) {
        return 
is_dir($dir) or ($this->mkpath(dirname($dir)) and (mkdir($dir0777) and chmod($dir,0777)));
    }
}
//
//$cache = new cache();
//$cache->set_cache_dir('./cache/ss/ff/mm/');
//$cache->set_cache_time(10);
//$cache_file    = '321ewqe3412132';
//$data    = array("1ee"=>"teseweq222ewt");
//$cache->set_cache($cache_file, $data);
//print_r($cache->get_cache($cache_file));
?>
分页: 4/10 第一页 上页 1 2 3 4 5 6 7 8 9 10 下页 最后页 [ 显示模式: 摘要 | 列表 ]