<?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_RETURNTRANSFER, true);
$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
安装nginx,并加入/etc/init.d/
默认nginx的目录是/usr/share/nginx/html/这个我们一会儿再编辑
现在安装mysql
修改你的mysql密码
安装相关库
修改mysql的库文件,否则在64位系统下老去找32位的mysql库
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
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
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
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
ln -sf /usr/lib64/mysql /usr/lib/mysql
» 阅读全文
以下操作都是ssh远程进行的,首先登陆上你的服务器
好了,不管其他的,先换源,默认源太慢了,我用的163的源,很快的
加入以下内容
ok,先更新吧
然后安装xen以及xen内核
然后修改启动文件使用xen内核启动
将文件中的default改为0,然后reboot重启机器
好了,不管其他的,先换源,默认源太慢了,我用的163的源,很快的
cd /etc/yum.repos.d/
mv CentOS-Base.repo CentOS-Base.repo.bak
vim CentOS-Base.repo
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
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重启机器
» 阅读全文
<?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($sql, 1);
$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($sql, 1);
return $this->get_cache($sql, 'getOne');
}
public function getRow($sql, $fetch_mode = MYSQLI_ASSOC) {
$this->query($sql, 1);
$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($sql, 1);
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>';
?>
<?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($dir, 0777) 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));
?>








