PHP是一个非常优秀的工具,它能够简单,也能够复杂。不一样的项目,应该用不一样的PHP。 

  小项目 - 简单而直接的PHP





  一般对于一个功能页面在20下面的站点。我们能够用一个非常easy的框架结构来写。在这个规模上,我建议是使用比較直接的面向过程编码方法,原因非常easy,没有必要把class文件弄的N 多。结果controller里边就一个new就完了。

当然,需求频繁变化的项目除外。





  在这个级别上,php长处表现的非常明显:高速开发。一目了然。

缺点同一时候也被隐藏得非常好。

  中型项目 - 结构优美的OO化的PHP





  对于一个中型项目。我建议使用一个良好设计的框架来做,这个框架能够是基于MVC模型,封装了众多底层操作的。当然。一定要有一个好的最好是透明的cache机制,这样。我们为了适应变化而增加的OO机制能够执行得更快更好。





  在这个级别上。

php的缺点開始凸现,像对OO支持的不完整(这个PHP5有非常大改进)。仅仅能单线程模式。另外一些外围工具開始出现缺乏支持。像PHP没有好的重构工具。没有好的集成到IDE中的单元測试工具。长处当然还是原来的高速开发,广泛的可用的开源资源。





  大型项目 - 扩展、优化后的PHP





  这里的大型项目,简单的指分布式项目,就是说,你的程序须要被部署在N台server上了。

在这个层级上。PHP比起j2ee的确缺乏非常多支持。我曾和shadow在735上具体讨论过PHP要在大型系统上应用须要解决的一些问题。当然这些问题不光是PHP这个语言的问题。也包含了周边开发的问题:





  1 PHP的页面代码共享,PHP的源码被加载内存一次以后。就在当中保留 - 这个用APC和Zend的优化器能够搞定。

  2 PHP页面之间的数据对象共享,a.php和b.php之间能够共享一个数据对象,比方数组。这个如今能够用序列化来作,可是会有文件io,这块能够用共享内存或者memcached来处理。





  3 PHP的数据库连接池,由于在多前端的情况下,PHP控制不住对数据库的连接。所以须要在数据库前边去作一个连接池,类似于sqlrelay的东西。另外数据缓存也是非常重要的,大压力开发有一个tip,就是能不动数据库就不要动数据库。

  4 PHP的前端cache系统。

一个透明的可控制的cache机制。确保站点的页面以最少次数查询数据库。这个有非常多实现,可是没有找到特别好的。





  5 一个PHP应用,成功的解决调这几个问题以后。应付略微大一点的压力是没有什么问题的。





  在这个级别上,重要的是,把PHP java C++ python之类融合起来。使其成为一个高效系统。

我们能够用memcached来做分布式内存管理,能够用Lucene 来作全文检索。用ejb 容器来放一些业务逻辑组件,PHP则作为前端和系统的胶水,高速而灵活的把这些粘合起来。

如​何​使​用​P​H​P​开​发​高​效​的​W​E​B​系​统的更多相关文章

  1. ​0​天​掌​握​i​O​S​开​发​之​D​a​y​2​ ​-​ ​内​存​管​理 (给学生讲解的课件,总结的不错)

    from:   10​天​掌​握​i​O​S​开​发​之​D​a​y​2​ ​-​ ​内​存​管​理

  2. C#& Screen 类&(&多&屏&幕&开&发)

    原文:C#& Screen 类&(&多&屏&幕&开&发) Screen 类 下面的代码示例演示如何使用 Screen 类的各种方法和属性. 该示 ...

  3. H - 栀子花开

    这是一个栀子花开的季节,也是一个离别的季节,四年一千多个日日夜夜,那校园的角角落落,留下了我们沉思的身影:那上百次的成绩排名表,印证了我们深深浅浅不断进步的轨迹,但是这些进步都离不开老师的谆谆教诲. ...

  4. 【android 开 发 】 - Android studio 下 NDK Jni 开发 简单例子

    Android 开发了一段时间,一方面 ,感觉不留下点什么.有点对不起自己, 另一方面,好记性不如烂笔头,为了往后可以回头来看看,就当做是笔记,便决定开始写博客.废话不多说 ! 今天想搞一搞 ndk ...

  5. P​D​F​二​次​开​发​_​i​S​t​y​l​e​P​D​F​表​单​域​的​填​充

    wo讲到PDF表单,我们首先需要认识Adobe定义的PDF表单有哪些.以下是我从网上搜索到的简单介绍: PDF 表单简介 PDF 是可移植文档格式(Portable Document Format)的 ...

  6. 前端开发之jQuery效果篇

    主要内容: 1.显示与隐藏效果 2.滑动效果 3.淡入与淡出效果 4.动画效果 5.弹出广告效果 一.显示与隐藏 显示与隐藏即 show() 和 hide() ,能够控制元素显示或隐藏. 实例: &l ...

  7. Go语言从入门到放弃(二) 优势/关键字

    本来这里是写数据类型的,但是规划了一下还是要一步步来,那么本篇就先介绍一下Go语言的 优势/关键字 吧 本章转载  <The Way to Go>一书 Go语言起源和发展 Go 语 言 起 ...

  8. 3D打印:三维智能数字化创造(全彩)

    3D打印:三维智能数字化创造(全彩)(全球第一本系统阐述3D打印与3D智能数字化的专业著作) 吴怀宇 编   ISBN 978-7-121-22063-0 2014年1月出版 定价:99.00元 42 ...

  9. inno setup介绍及官方网站地址

    使 用 笔 记 1.Inno Setup 是什么?Inno Setup 是一个免费的 Windows 安装程序制作软件.第一次发表是在 1997 年,Inno Setup 今天在功能设置和稳定性上的竞 ...

随机推荐

  1. 再谈Cognos报表设计中的维度函数

    在报表设计的过程中,客户很多时候会想看同比.环比的数据,很多人会想到利用日期函数在数据库中处理好然后直接在报表拖出来使用,其实这样加大了数据库的压力,当然也是解决问题的一种思路.今天我们就来说一下如何 ...

  2. Google开源单元測试框架Google Test:VS2012 配置

    由题目可知,Google Test(简称gtest)是Google公布的一个开源C/C++測试框架,被应用于多个开源项目及Google内部项目中,包括Chrome浏览器.LLVM编译器架构.Proto ...

  3. vim 查找和替换命令 替换/n和\n

    一. 字符串的查找 1. vim 中用 / 和 ? 来查找字符串,两者的区别是: /string 会高亮显示光标后匹配的第一个字符串,回车后光标移到该字符串的第一个字母: ?string 会高亮显示光 ...

  4. Linux下的编译器(转)

    转自:http://ju.outofmemory.cn/entry/2051 简单的说,编译器就是一个可执行程序,它专门用于将程序员易于编写的高级语言 (如 C 语言) 翻译为机器可以识别的低级语言. ...

  5. windows bat启动多个应用程序

      windows bat启动多个应用程序 CreationTime--2018年7月26日11点02分 Author:Marydon 1.应用场景 每天开机后,都需要打开平常所需要的软件,又不想将程 ...

  6. Python-搭建Nginx+Django环境

    1.安装 flup 模块 下载:http://projects.unbit.it/downloads/uwsgi-latest.tar.gz 安装:python setup.py install 2. ...

  7. Android上怎样使用《贝赛尔曲线》

    首先对于<赛贝尔曲线>不是很了解的童鞋,请自觉白度百科.google. 为了方便偷懒的童鞋,这里给个<贝赛尔曲线>百科地址,以及一段话简述<贝赛尔曲线>: < ...

  8. Linux-软件包管理-RPM安装位置\源码包安装位置

    rpm -ql httpd 查看apache包中文件的安装位置 find /etc -name httpd 查找apache程序的启动执行httpd所在位置 cd /etc/rc.d/init.d 切 ...

  9. TFS2013以独占的方式签出

  10. sql中一列拆成两列

    declare @table table (name nvarchar(4))insert into @tableselect '张三' union allselect '李四' union alls ...