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

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

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

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

来源: 发布时间:星期一, 2009年1月12日 浏览:58次 评论:0
  这里所说“大型”应用不是说像Google、eBay、Yahoo这类大型网站WebSite具体实施我也没有意图劝说读者放弃自己概念和信仰只是希望大家系统可以运行得更快更流畅可以承载更多用户在线希望可以给PHP初学者点帮助

  有关PHP执行效率网上专题文章很多多以PHP、Java几个阵营争论开始个不确定期待结束很少看见个明确结论确实执行效率是很难从比较中得出应用方面区别执行环境区别效率差别会差得比较大而且效率也是需要权衡大家都知道汇编语言很底层可以写出非常高效但是我还很少应该说是几乎没看过有人用汇编做Web开发而且有能力用汇编写出高效人似乎都是值得大家仰视哈哈~我们没有必要去讨论PHP和汇编到底差多少只要知道自己PHP和别人PHP差多少就可以了

  首先先要明确这篇文章前提:必须有台或更多可以被自己操纵服务器而不是虚拟主机空间毕竟可以在虚拟主机上运行通用系统已经有了很多经典作品和成熟框架效率挖掘已经被前辈们做得非常出色了它们很多理念也被现在很多PHP用户继承和发展越来越多所谓“框架”也像满天繁星我也不想再去写那个我自己水平也不如何样写不出什么新鲜玩意来写出来也招人笑第 2是写这个文章太多了说法也太多了混乱是造成很多富有激情未来天才员夭折最大元凶

  在独立服务器上执行和在虚拟主机上可以运行在效率优化方面有着很大差别您当然可以把套discuz不加修改地安装在台甚至堆独立服务器上不过它真得到最大性能优化吗您真对得起这堆服务器吗?

  独立服务器指使用者对这台机器有完全控制权包括安装、删除软件Software配置系统参数甚至修改源代码基于这样个开放硬件平台性能也不仅仅是体现在速度上还包括安全性、稳定性等和虚拟主机区别用户必须自己配置Web服务器参数安装和配置PHP、数据库以及安装各种乱 7 8糟东西(我喜欢这么说)当然还要对它们负责

  首先提出几个名词:执行时间、模板、数据库封装、Cache、Buffer、Hash、守护进程、crontab

  执行时间谁都知道就是从执行开始到执行结束所用时间Web是瞬时、无状态所以执行时间是Web执行效率个指标它并不适合衡量C/S或者后台守护它们很多都是持续运行页面执行时间个典型例子就是Discuz论坛页面最下方时间显式通常Discuz都是几毫秒到几十毫秒和所用平台、数据量和当前系统压力有关

  模板大家再熟悉不过虽然有很多人只是在用但是不知道为什么在用模板在传统上来说是划分逻辑层种途径在MVC上结构里它把表示层和下层分离在实际使用中它方便员和界面设计人员分工合作然而现在很多场合中由于模板不当使用它非但没有起到促进员和界面设计人员分工合作反倒成为员和美工互相仇视罪魁(我好像在以前帖子里这样说过)很多人在抱怨他们不得不花很多时间在整理模板上

  数据库封装似乎和Java关系更大它对多种数据库系统提供个统接口通常是些封装好这些类有时也完成些比如SQL检查、过滤等工作PHPLIB里DB封装、PEAR DB、Adodb等都很有名人也很多

  Cache和Buffer看起来好像是种东西Cache叫做缓存Cache而Buffer叫做缓冲在硬件概念中Cache用途是连接两种速度区别设备比如寄存器和内存、CPU和PCI-Bus、IDE总线和硬盘Buffer原意是类似弹簧种缓冲器用来减轻或吸收冲击震动东西Buffer是种数据预存取方式它用于临时存储数据并以和接收速度区别速度传输Buffer更新方式可以是按时间间隔自动刷新而Cache则更讲究“命中率”将当前时间段使用频繁少量数据放到高速设备中方便读写开发中固然没有什么高速、低速设备不过数据源是可以有区别读写效率对于少量数据文本文件读写通常就要比数据库存取效率好而同样是文本文件读写在tmpfs上效率就要比直接磁盘IO效率好Buffer更多地体现在进程通信和队列上很多时候并不是接收方没有能力更快地读取而是没有必要更快地读取

  守护进程是种在后台连续执行它通常是起到监视、控制流程、对外提供服务等作用比如Apache本身就可以被理解成个守护进程虽然它实际上是由很多个经常更新进程组成(主进程是固定)

  Crontab是UNIX/Linux定时有点像Windows“计划任务”它设定在多少个时间间隔后或者是某个时间点执行特定它通常用来完成自动更新、清除临时数据等段时间自动执行操作

  另外个比较特别概念(说它特别是相对于习惯了通用系统开发人来说)是当我们拥有了台独立服务器的后完全没必要把自己局限在PHP所能提供功能范围内当我们不知不觉地成为系统主人后要努力发现到这我们有很多东西可以用PHP不是万能(这简直是)对于它功能上不足完全可以用Perl来弥补Perl做为种通用语言可以提供更多功能选择砂砾样密模块给这个随意得有些变态语言提供了无穷能量对于PHP性能上不足完全可以用C来补充PHP根本就是由C继承来PHP本身也是由C开发用C来做PHP扩展是完全合理

  Linux本身就是由C和Perl在支撑(我这样说完全不是为了夸大Perl地位大家可以去看看个标准Linux中有多少Perl脚本离开Perl的后这个系统是不是觉得像个残疾人)PHP从C中继承了大部分语法从Perl中学习了大部分Web特性、和那个貌似和开源很矛盾“$”符号(PHP早期就是个Perl脚本)

  我发现我很能写废话哈哈……

  下面来分析我在使用些代码(注:Linux独立服务器适用我好像已经放弃对Windows和虚拟主机做大型开发很长时间了)里面使用了些也许很熟悉也许很陌生也许很变态思路方法系统是RedHat AS3没有什么特别PHP版本是4.4.0MySQL是4.1我从来没有刻意地去写些必须用到PHP5新特性代码除非真必须用到



  我Web根目录在/www下Apache、PHP都是默认安装在/usr/local/下MySQL是下载编译好 2进制版本我也样把它丢在那里只是用于测试我不想它看起来很乱至于在实际项目中尤其是多台服务器情况下需要好好地部署下你系统

  为了使系统结构清晰我把需要使用文件都放在了 2级目录下面

  下面是通用头文件/s/kernel/common.inc.php些片断:

<?php
(!d('IN_BSG')){
  exit;
}
?>


  上面代码保证它只能被合法而不会被其它文件如果正在执行没有定义个'IN_BSG'常量它在这个common.inc.php的后会终止

<?php
list($usec,$sec)=explode("",microtime);
$page_time_start=$usec+$sec;
?>


  这两行大家可能都会比较熟悉这是计算开始执行时间结束的前还会再计算下这个是得出执行所耗费时间如果你不在意这些可以放心地把它注释掉



0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: