专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »PHP教程 » php入门:PHP大型Web应用入门(十) »正文

php入门:PHP大型Web应用入门(十)

来源: 发布时间:星期一, 2009年1月12日 浏览:35次 评论:0
  主要就是这些东西支撑起个系统运行必要部分我从来不强调MVC层次也不去讲究OOP虽然偶尔也写些很蹩脚多年以来Pascal、C和汇编养成习惯使我相比注意OO结构的外更注意执行效率这次只是罗列了些基于共享内存和tmpfs优化思路方法

  至于把什么样数据放在tmpfs上各位自己看着办我把文件、session、模板编译结果、cache文件放在了上面在提升IO性能同时它带来个好处是不需要把这些文件放在web目录里也提高了不少安全性即使有些文件需要放在web目录下比如执行文件(废话……)也不要用奇怪扩展名对于config.inc.php这样文件尤其要注意不要使用config.inc这种文件名很有可能你系统忘了配置对.inc支持访问者可以直接在浏览器里访问config.inc就可以把这个文件下载走了而这个文件里保存着你数据库密码……

  走到这里我们已经逐渐地跟上了优化步伐在后面时间里优化结构同时已经可以做好更输入地挖掘系统潜力准备了将优化进行到底挑战台服务器到底能撑住多少个访问者是我近期变态目标不过再走下去可能已经走出了PHP领地各位定要有心理准备C写得有时候比天书还乱…………hoho

  附上那个压缩/解压类:

<?php
BsmPkg
{
//ThisoperateswithPKGarchiveformat...Haha
//ByDr.NP02-15-2006
  
var$name='BsmPkg';
var$source_dir='';
var$target_dir='';
var$filename='';
var$max_filesize=1048576;
  
var$error_msg='';
var$line_ret="n";
  
functionpack_from_dir
{
ini_('memory_limit','32M');
global$content;
  
$source_dir=$this->source_dir?$this->source_dir:'./';
  
$content='<PACKAGE_START>'.$this->line_ret;
$this->_GetDirs($source_dir);
$content.='<PACKAGE_END>';
$zfp=gzopen($this->filename,'wb9');
gzwrite($zfp,$content);
gzclose($zfp);
;
}
  
functionunpack_o_dir
{
ini_('memory_limit','32M');
  
$target_dir=$this->target_dir?$this->target_dir:'./';
$zfp=gzopen($this->filename,'rb');
$content=gzread($zfp,$this->max_filesize);
gzclose($zfp);
$lines=explode($this->line_ret,$content);
while(list($key,$line)=each($lines)){
(preg_match("/<Directory:([0-7]+)>(S+)</Directory>/is",$line,$march)){
$access_str=$march[1];
$item_dir=$march[2];
(!is_dir($target_dir.$item_dir)){
mkdir($target_dir.$item_dir);
@chmod($target_dir.$item_dir,val($access_str,8));
}
}
  
(preg_match("/<File:(d+)-([0-9a-f]+)-([0-7]+)>(S+)</File>/is",$line,$march)){
$target_file=$march[4];
$access_str=$march[3];
$target_file_checksum=$march[2];
$target_filesize=$march[1];
  
(!@$fp=fopen($target_dir.$target_file,'wb')){
continue;
}
  
(false=(list($key,$content)=each($lines))){
continue;
}
  
$file_content=base64_decode(trim($content));
  
(!@fwrite($fp,$file_content)){
continue;
}
  
fclose($fp);
  
(!@md5_file($target_file)$target_file_checksum){
$this->error_msg='File:'.$target_dir.$target_file.'CheckSumFailed...';
}
  
@chmod($target_dir.$target_file,val($access_str,8));
  
}
}
;
}
  
function_GetDirs($dirname)
{
global$content;
  
$dh=opendir($dirname);
  
while(false!($item=readdir($dh))){
$full_itemname=str_replace('//','/',$dirname.'/'.$item);
(strpos($full_itemname,$this->source_dir)=0)
$pkg_itemname=substr($full_itemname,strlen($this->source_dir));

continue;
  
($item!='.'&&$item!='..'&&$item!=$this->filename){
(is_dir($full_itemname)){
$access_str=substr(decoct(fileperms($full_itemname)),-4);
$content.="<Directory:{$access_str}>$pkg_itemname</Directory>{$this->line_ret}";
$this->_GetDirs($full_itemname);
}
  
(is_file($full_itemname)&&is_readable($full_itemname)){
$filesize=filesize($full_itemname);
$checksum=md5_file($full_itemname);
$access_str=substr(decoct(fileperms($full_itemname)),-4);
$content.="<File:{$filesize}-{$checksum}-{$access_str}>$pkg_itemname</File>{$this->line_ret}";
  
@$fp=fopen($full_itemname,'rb');
($filesize>0)
$source_file_str=fread($fp,$filesize);

$source_file_str='';
$base64_str=base64_encode($source_file_str);
fclose($fp);
  
$content.=$base64_str.$this->line_ret;
}
}
}
;
}
}
?>


0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: