不一样的项目,不一样的PHP

项目

    在首页看到一篇文章 PHP做Web项目的优缺点, 自己也来废话几句。
  其实PHP是一个很优秀的工具,它可以简单,也可以复杂。不一样的项目,应该用不一样的PHP。

  小项目 - 简单而直接的PHP

  一般对于一个功能页面在20以下的网站,我们可以用一个很简单的框架结构来写。在这个规模上,我建议是使用比较直接的面向过程编码方法,原因很简单,没有必要把class文件弄的N 多,结果controller里边就一个new就完了。当然,需求频繁变化的项目除外。

  在这个级别上,php优点表现的很明显:快速开发,一目了然。缺点同时也被隐藏得很好。

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

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

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

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

  这里的大型项目,简单的指分布式项目,就是说,你的程序需要被部署在N台服务器上了。在这个层级上,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则作为前端和系统的胶水,快速而灵活的把这些东东粘合起来。

时间: 2024-09-18 14:01:28

不一样的项目,不一样的PHP的相关文章

vs2010新建项目是表如下图的错误怎么解决?按图中的路径寻找不到activitylog.xml

问题描述 vs2010新建项目是表如下图的错误怎么解决?按图中的路径寻找不到activitylog.xml

三步将 React Native 项目运行在 Web 浏览器上面

React Native 的出现,让前端工程师拥有了使用 JavaScript 编写原生 APP 的能力.相比之前的 Web app 来说,对于性能和用户体验提升了非常多. 但是 React Native 的代码只兼容两个平台(iOS 和 Android),并没有兼容 Web 端访问.这里是因为 Facebook 开发人员认为 Web 端天生兼容性就巨麻烦,而且平台差异性是注定存在而且也要保留的,所以 React Native 的目标是 Learn once, write anywhere,而不

extjs4.0 应用 新建项目怎么添加包

问题描述 extjs4.0 应用 新建项目怎么添加包 如题所示,网上也百度了一些但是总是有些功能不能用,还有5.0兼容4.0吗?急救....拜谢大神 解决方案 extjs的相对容易配置,你先把java和eclipse的环境配置好,然后把extjs的包放到自己的项目中就行了,高版本未必完全兼容低版本,有可能修改了类名,或者某些方法不用了,你可以试试,正常情况下不会有大问题

从一个小项目操作看Google中文优化的点滴

在上月底因公司一个项目需要,接到一个"突然"的任务,一个月时间将关键词上海无纺布袋.帆布袋操作到Google首页,并且保持稳定,现在回想,半个月过去了,中途的项目排名也是比较跌宕起伏,颇有些感受的,深深体会到SEO前辈告诉我的一句话:SEO重点是执行,不是策略;核心是管理,不是技术.现和大家一起分享之: 之前有一定操作历史的,共优化3个关键词,上海环保袋.上海无纺布袋和帆布袋www.sh-guichuan.com动态且客户站点,之后关键词在今年4月25日左右时间出现波动,之后就一直没有

源代码-我在学习Android 的ZXing开源项目二维码时 有几个类 不清楚他具体的意义,功能。

问题描述 我在学习Android 的ZXing开源项目二维码时 有几个类 不清楚他具体的意义,功能. ①BitMatrix.java ②ByteMatrix.java ③MultiFormatWriter.java ④QRCodeWriter.java 这4个 我实在不懂 这功能,这里面哪个 是将输入字符串 变成那个0,1 那个的?用什么算法了...我这是Android工程. 谢谢了...

在项目中使用不安全代码【转】

from:http://bingya.javaeye.com/blog/657978 Unsafe code may only appear if compiling with /unsafe 文章分类:.net编程 要在vs.net中使用unsafe code 我们必须在项目的属性中设置一下,设置方法如下: 点项目属性(Properties)->生成(Build)->常规(General)中:钩上允许不安全代码(Allow unsafe code)     C#代码  public stat

将Node.js项目docker容器化并纳入kubernetes调度编排的实践

  简述 此文档以XXXLogApi-nj项目为例,讲解了将基于Node.js+Express开发的javascript项目容器化的过程.希望以后类似的项目可以以此为参照进行扩展. XXXLogApi-nj本身是一个微服务化的项目,其作用是为系统单纯的收集相关发布日志,以便能及时的展示给用户. ***这份文档的操作,开始于编码完成之后流程.不涉及GIT和JENKINS的等的操作. ***为保持职业操作,涉及公司信息的地方作了敏感化处理. ***在这个系列中,我同时作了spring boot, b

关于maven多项目之间的引用问题

问题描述 关于maven多项目之间的引用问题 现在是我的test-rop maven web中想引用 api接口中的一个server方法 我如何建立依赖关系才能引用到呢?我将api建到了web的依赖中了 但是还是引不到 这是我web的pom.xml中引用的配置 是通过maven生成的 <dependency> <groupId>com-lyl-base-api</groupId> <artifactId>com-lyl-base-api</artifa

tomcat启动报错-同一项目在我的电脑上启动报错(缺少jar包,其实是有的),但在别人的电脑上却能正常启动,请求帮助

问题描述 同一项目在我的电脑上启动报错(缺少jar包,其实是有的),但在别人的电脑上却能正常启动,请求帮助 解决方案 如果是这样,那说明你引入的有问题啊, 1. 重新引入jar一下!!!对着jar右键add- 2. clean一下!!! 3. 重新发布项目 解决方案二: web项目直接放在lib文件夹下,就不需要add了吧, 此外,这项目在别的电脑可以正常运行 解决方案三: 有可能是jar包没有引入,在build path 把项目所有jar包都引进去 解决方案四: 谢谢各位,问题已解决.缘由是t

tomcat-为什么我的myeclipse2014使用自己配置的Tomcat时,无法部署项目

问题描述 为什么我的myeclipse2014使用自己配置的Tomcat时,无法部署项目 配置文件和错误信息如上,尝试百度的好多方法,都得不到解决,谁能帮我看看,谢谢啦. 解决方案 感谢大家,我找到问题了,myeclipse2014配置自己安装的tomcat要把tomcat安装在某盘(我安装在C盘)根目录,如:C:Tomcat 7.0.以前安装在默认路径下,老出错.现在好啦,如果还有其他朋友遇到这个问题,就试试重新安装tomcat到根目录吧. 解决方案二: tomcat中无法部署myeclips