http://blog.sina.com.cn/u/1466087093[订阅]
个人资料
公告
本blog已经停用!所有文章已经搬到
bingkafei.cublog.cn以后直接去那就可以了,这就不在更新了
 
有事给我留言
推荐网志
软件下载
分类
    内容读取中…
评论
读取中...
友情链接
DoNews互联网

关于IT类新闻

编程爱好者

编程类文章

计数器
计数统计
访客
读取中...
好友
读取中...
博文
本blog已经停用!(2006-02-12 19:50)
本blog已经停用!所有文章已经搬到
bingkafei.cublog.cn以后直接去那就可以了,这就不在更新了
 
有事给我留言
PHP 编码规范(2006-02-10 10:32)

原文:http://pear.php.net/manual/en/standards.php

翻译:廖宇雷

最后更新日期:2003/05/06


缩进

缩进使用4个空格,而不是 tab。如果你使用 Emacs 编辑 PEAR 代码,你应该设置 indent-tabs-mode 为 nil。下面是一个 mode hook 的示例,用于设置 Emacs 符合缩进标准(你必须确保在编辑 PHP 文件时,这些设置发生作用):

  (defun php-mode-hook ()
  (setq tab-width 4
        c-basic-offset 4
        c-hanging-comment-ender-p nil
        indent-tabs-mode
       

可缓存的动态页面设计

什么样的页面能够比较好的被缓存服务器缓存呢?如果返回内容的HTTP HEADER中有'Last-Modified'和'Expires'相关声明,比如:
Last-Modified: Wed, 14 May 2003 13:06:17 GMT
Expires: Fri, 16 Jun 2003 13:06:17 GMT

前端缓存服务器在期间会将生成的页面缓存在本地:硬盘或者内存中,直至上述页面过期。

因此,一个可缓存的页面:
  • 页面必须包含Last-Modified: 标记
    一般纯静态页面本身都会有Last-Modified信息,动态页面需要通过函数强制加上,比如在PHP中:
    // always modified now
    header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');


  • 必须有Expires或Cache-Control: max-age标记设置页面的过期时间:
    对于静态页面,通过apache的mod_expires根据页面的MIME类型设置缓存周期:比如图片缺省是1个月,HTML页面缺省是2天等。
    <IfModule mod_expires.c>
        ExpiresActive on
        ExpiresByType image/gif 'access plus

对于一个日访问量达到百万级的网站来说,速度很快就成为一个瓶颈。除了优化内容发布系统的应用本身外,如果能把不需要实时更新的动态页面的输出结果转化成静态网页来发布,速度上的提升效果将是显著的,因为一个动态页面的速度往往会比静态页面慢2-10倍,而静态网页的内容如果能被缓存在内存里,访问速度甚至会比原有动态网页有2-3个数量级的提高

后台的内容管理系统的页面输出遵守可缓存的设计,这样就可以把性能问题交给前台的缓存服务器来解决了,从而大大简化CMS系统本身的复杂程度。

 

静态缓存和动态缓存的比较

静态页面的缓存可能有2种形式:其实主要区别就是CMS是否自己负责关联内容的缓存更新管理。

  1. 静态缓存:是在新内容发布的同时就立刻生成相应内容的静态页面,比如:2003年3月22日,管理员通过后台内容管理界面录入一篇文章后,就立刻生成http://www.chedong.com/tech/2003/03/22/001.html这个静态页面,并同
WEB软件结构原则(2006-02-10 09:47)

一、 目录结构清楚,不宜过深,复杂,路径最好用相对地址
二、 命名适当
三、 常变内容、界面使模板较好
四、 共公信息统一存储
五、 Include文件不可嵌入较多
六、 目录下不可存储太多内容文件
七、 数据结构要设计合理
八、 数据校验应在服务器端
九、 连接数据库近晚,断开连接近早
十、 尽量少使用SESSION与COOKIE

详细说明:

(一) 目录结构清楚,不宜过深,复杂,路径最好用相对地址
a) 什么样的目录放什么样的内容,这样便于管理,使WEB程序的目录结构,清楚明了,一看便知道某个文件夹下存储了哪些功能模块与内容。若随便存放,时间一长久自己都将不从了解某目录是用来做什么的。如:经常要使用的可执行文件最要存放在(项目根目录)根目录,这样做主要是便于了解其作用,同时也为在程序中少输入些地址字符。程序所用到的图片统一存放在根目录下images目录中,若项目较大,分枝较多,可再在其目录下建立也分枝程序相关的目录名,存储相关的图片内容。程序的配置文件与常用共公函数类库存放在include目录中,存放在此目录下的函数类库文件扩展名得命名为:.php切不命名为.inc .ini之类为扩展名的

PHP应用提速面面观(2006-02-09 10:42)
PHP最大的优点之一显然在于它的速度快。一般情况下PHP总是具有足够的速度支持Web内容动态生成,许多时候你甚至无法找出比它更快的方法。然而,当你不得不面对庞大的访问量、高负荷的应用、有限的带宽以及其他各种带来性能瓶颈的因素时,你可能会问问自己是否可以做点什么让网站运行得更好。或许只要加上一个很不起眼的免费模块,你的PHP应用性能以及Web服务器响应速度就会有显著的改善。本文讨论的就是如何进一步提高php应用的性能,给用户以更美妙的浏览感受。本文分三个方面(代码优化、缓存、内容压缩)阐述提高PHP应用性能的各种技术,并介绍各个领域的知名产品。 

代码优化 
首先我们来看看代码优化。注意,这里的代码优化可不是指把代码写得更加美观漂亮,因为这恐怕已经是众所周知没有必要继续讨论了;另外,如果你已经考虑到了速度问题,很可能你早就对PHP的源代码作了一些优化。不过,有些工具却能够自动地帮助我们完成这些繁杂的工作,如Zend Optimizer就是这样一个工具。Zend Optimizer可以从Zend Technologies免费得到,但你必须同意它的许可约定,注意它不是以GPL方式发行。Zend Optimizer获取由Zend Engin

最近刚刚完成手中的项目,比较闲。来这儿转转,把积累的一些技巧分享给大家!
1、关于PHP重定向
方法一:header('Location: index.php');
方法二:echo '<script>window.location =\'$PHP_SELF\';</script>';
方法三:echo '<META HTTP-EQUIV=\'Refresh\' CONTENT=\'0; URL=index.php\'>';

2、获取访问者浏览器

function browse_infor()
{
$browser='';$browserver='';
$Browsers =array('Lynx','MOSAIC','AOL','Opera','JAVA','MacWeb','WebExplorer','OmniWeb');
$Agent = $GLOBALS['HTTP_USER_AGENT'];
for ($i=0; $i<=7; $i++)
{
if (strpos($Agent,$Browsers[$i]))
{
$browser = $Browsers[$i];
$browserver ='';
}
}
if (ereg('Mozilla',$Agent) && !ereg('MSIE',$Agent))
{
$temp =explode('(', $Agent); $Part=$temp[0];
$temp =explode('/', $Part); $browserver=$temp[1];
$temp =explode(' ',$browserver); $browserver=$temp[0];
$browserver =preg_replace('/([\d\.]+)/','\\1',$browserver);

最近小阳做了一个PHP同学录,同学们自己在那里添加或修改姓名、邮箱、OICQ等信息,并保存在mySQL数据库里。某日小阳突然想到,如果能用PHP生成一个文件,供同学们下载并把这些资料导入他们的Foxmail地址簿中,那该多好啊!
 
      说干就干,很快小阳便将这功能推出来了。那是如何实现的呢?这里仅以导出姓名、邮箱和OICQ三项予以说明。

      要资料可以导入Foxmail地址簿,当然要先了解一下导入Foxmail地址簿的文件内容和格式。打开Foxmail4.2一个帐户的地址簿,在其菜单栏“工具”-“导入”中可以看到,Foxmail支持两种外部文件的导入:“CSV文件”和“Wab文件”。我们选择生成CSV文件。那么可以导入Foxmail的CSV文件的内容和格式如何呢?让我们先从Foxmail导出一个CSV文件看一下。在Foxmail地址簿中选择一个记录不为空的文件夹,执行“工具”-“导出”- “文本文件”,保存文件名为“TEMP.CSV”, 在“下一步”的“请选择输出字段”中选择“姓名”、“电子邮箱地址”和“OICQ”,点击“完成”后便在指定路径生成了“TEMP.CSV”文件了。如果你装了微软office系列,会发现这是一个用EXCEL默认打开

在本系列文章(有关如何在实际情况下开发有效的 PHP 代码)的第 3 部分中,Amol Hatwar 讨论了如何构建最有效的功能型函数,使用这些函数不会牺牲太多性能或可管理性。作者重点阐述了如何编写可重用函数,并介绍了如何避免与该任务相关的一些最常见问题。

欢迎回来。在本系列文章的第 1 部分中,我讨论了一些基本的 PHP 设计规则,并介绍了如何编写安全、简单、与平台无关且快速的代码。在第 2 部分中,我介绍了变量,并讨论了它们在 PHP 编码中的用法 — 好的和坏的实践。

在本文中,您将了解如何在 PHP 中明智地使用函数。在每一种高级编程语言中,程序员都可以定义函数,PHP 也不例外。唯一的区别在于,您不必担心函数的返回类型。

深入研究
函数可用于:

  • 将几行代码封装成一条语句。
  • 简化代码。
  • 最重要的是,将应用程序作为更小的应用程序相互协调的产物。

对于从编译语言(如 C/C++)转到 PHP 的开发人员来说,PHP 的性能级别是令人吃惊的。在使用 CPU 和内存资源方面,

用 PHP 开发健壮的代码”是关于解决大中型应用程序中的实际问题的系列文章。在本文中,PHP 老手 Amol Hatwar 讨论了如何有效地使用变量。他还演示了如何通过使用 PHP 中可变的变量名来构造配置文件解析器,以便简化脚本配置。

在我的前一篇文章中,我研究了在规划、设计甚至编写代码期间必须考虑的一些因素。在本文中,您将真正接触到实际代码,并可以看到实际运行中的一些东西。如果您还没有看过前一篇文章,那么最好现在就看一看。

正确处理变量
变量与函数是任何计算机语言必不可少的要素。有了变量,您可以将数据抽象化;有了函数,您可以将几行代码抽象化。正如 Bruce Eckel 在他的书籍《C++ 编程思想》中所说的那样,所有编程语言都提供抽象。汇编语言是对底层机器的小抽象。随后的许多所谓的命令式语言(如 Fortran、BASIC 和 C)是对汇编语言的抽象。

编程语言提供的抽象的种类和质量直接关系到您所能解决的问题的复杂程度。理解 PHP 如何处理变量和函数,