• ----:)欢迎访问源码网(:----
    • 首页
    • 博客
    • 学院
    • 下载
    • 论坛
    • 影视
    • 发布源码
    • RSS
    • ITPig
    • 笑话网
    • 百家姓
    • 繁體中文

源码网 - 中国第一源码门户
选择镜像:网通镜像 - 电信主站
  • 首 页
  • 新闻动态
  • 网站运营
  • 网页制作
  • WEB开发
  • 编程开发
  • 图像媒体
  • 操作系统
  • 数据库
  • 服务器
热门搜索 优化 SEO 故事 cms IIS7 MySQL 个人 AdSense 主题推广 | 文章搜索: 高级搜索
会员登录/控制面版您的位置: 学院首页 >> WEB开发 >> PHP 开发 >> PHP精通 >> 详细内容
 

推荐文章

  • PHP 程序加速探索
  • 用封装类来合理的设计PHP项目--谈PHP项目中类的封装
 
 

热点文章

  • 30分钟学会用PHP写带数据库的简单通讯录
  • 结合AJAX进行PHP开发之入门
  • 最强的PHP字符串截取函数
  • 汉字编码问题
  • PHP向脚本提交POST数据
  • 中文字符集与字符编码的基础知识
  • PHP实现验证码一法
  • php模板smarty
  • php如何隐藏图片的真实地址
  • PHP 程序加速探索
  • php防盗链的方法
  • 用封装类来合理的设计PHP项目--谈PHP项目中类的封装
 
 

相关文章

  • PHP使用zlib扩展实现页面GZIP压缩输出
  • 为什么PHP令人不爽(对于大型系统)
  • php中的stdClass
  • php中ADODB类使用
  • php自动post数据--百度贴吧灌水机器人代码实例
  • Linux/FreeBSD下用C语言开发PHP的so扩展模块例解
  • php取不到session的常见原因
  • 使用php的zlib压缩和解压缩swf文件
  • php 做服务器端程序
  • PHP5.2下function和class性能对比
  • PHP用mkdir()新建立目录无写的权限的问题
  • mysql的bigint类型与php的mysql_insert_id函数造成的b..
 
 

百度搜索

 
 

PHP大型Web应用入门(十)

  • 阅览次数:
  • 文章来源: http://goodlinuxer.bokee.com/
  • 原文作者: 静水人生
  • 整理日期: 2008-07-28
  • 发表评论
  • 字体大小:
  • 小
  • 中
  • 大

* * * * * *

主要就是这些东西支撑起一个系统运行的必要部分。我从来不强调MVC层次,也不去讲究OOP,虽然偶尔也写一些很蹩脚的类。多年以来Pascal、C和汇编养成的习惯使我相比注意OO结构之外更注意执行效率。这次只是罗列了一些基于共享内存和tmpfs的优化方法。
至于把什么样的数据放在tmpfs上,各位自己看着办。我把include文件、session、模板的编译结果、cache文件放在了上面。在提升IO性能的同时,它带来的另一个好处是不需要把这些文件放在web目录里,也提高了不少安全性。即使有一些文件需要放在web目录下,比如程序执行文件(废话……),也不要用奇怪的扩展名。对于config.inc.php这样的文件尤其要注意,不要使用config.inc这种文件名,很有可能你的系统忘了配置对.inc的支持,访问者可以直接在浏览器里访问config.inc就可以把这个文件下载走了,而这个文件里保存着你的数据库密码……
走到这里,我们已经逐渐地跟上了优化的步伐,在后面的时间里,优化程序结构的同时,已经可以做好更输入地挖掘系统潜力的的准备了。将优化进行到底,挑战一下一台服务器到底能撑住多少个访问者是我近期的变态目标。不过再走下去,可能已经走出了PHP的领地,各位一定要有心理准备,因为我的C程序写得有时候比天书还乱…………hoho
附上那个压缩/解压的类:

<?php
classBsmPkg
{
//ThisclassoperateswithPKGarchiveformat...Haha
//ByDr.NP02-15-2006

var$classname='BsmPkg';
var
$source_dir='';
var
$target_dir='';
var
$filename='';
var
$max_filesize=1048576;

var
$error_msg='';
var
$line_ret="n";

function
pack_from_dir()
{
ini_set('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);
return;
}

function
unpack_into_dir()
{
ini_set('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)){
if(
preg_match("/<==Directory:([0-7]+)==>(S+)<==/Directory==>/is",$line,$march)){
$access_str=$march[1];
$item_dir=$march[2];
if(!
is_dir($target_dir.$item_dir)){
mkdir($target_dir.$item_dir);
@
chmod($target_dir.$item_dir,intval($access_str,8));
}
}

if(
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];

if(!@
$fp=fopen($target_dir.$target_file,'wb')){
continue;
}

if(
false===(list($key,$content)=each($lines))){
continue;
}

$file_content=base64_decode(trim($content));

if(!@
fwrite($fp,$file_content)){
continue;
}

fclose($fp);

if(!@
md5_file($target_file)==$target_file_checksum){
$this->error_msg='File:'.$target_dir.$target_file.'CheckSumFailed...';
}

@
chmod($target_dir.$target_file,intval($access_str,8));

}
}
return;
}

function
_GetDirs($dirname)
{
global
$content;

$dh=opendir($dirname);

while(
false!==($item=readdir($dh))){
$full_itemname=str_replace('//','/',$dirname.'/'.$item);
if(
strpos($full_itemname,$this->source_dir)===0)
$pkg_itemname=substr($full_itemname,strlen($this->source_dir));
else
continue;

if(
$item!='.'&&$item!='..'&&$item!=$this->filename){
if(
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);
}

elseif(
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');
if(
$filesize>0)
$source_file_str=fread($fp,$filesize);
else
$source_file_str='';
$base64_str=base64_encode($source_file_str);
fclose($fp);

$content.=$base64_str.$this->line_ret;
}
}
}
return;
}
}
?>

上一篇:PHP使用zlib扩展实现页面GZIP压缩输出
下一篇:构建支持Master/Slave读写分离的数据库操作类
  • 网友评论:
  • 查看所有评论
  • 我要发表评论
您的网名:
留言主题:
你要发表的内容:

 

关于本站 | 广告联系 | 版权声明 | 网站地图 | 发布软件 | 帮助中心 | 源码论坛

Copyright © 2005-2007 CodePub.Com  程序支持:木翼  滇ICP备05005971号