首页 »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; } } } ; } } ?>
相关文章
读者评论
发表评论
|
|