如何使用PHP开发高效的WEB系统
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则作为前端和系统的胶水,高速而灵活的把这些粘合起来。
如何使用PHP开发高效的WEB系统的更多相关文章
- 0天掌握iOS开发之Day2 - 内存管理 (给学生讲解的课件,总结的不错)
from: 10天掌握iOS开发之Day2 - 内存管理
- C#& Screen 类&(&多&屏&幕&开&发)
原文:C#& Screen 类&(&多&屏&幕&开&发) Screen 类 下面的代码示例演示如何使用 Screen 类的各种方法和属性. 该示 ...
- H - 栀子花开
这是一个栀子花开的季节,也是一个离别的季节,四年一千多个日日夜夜,那校园的角角落落,留下了我们沉思的身影:那上百次的成绩排名表,印证了我们深深浅浅不断进步的轨迹,但是这些进步都离不开老师的谆谆教诲. ...
- 【android 开 发 】 - Android studio 下 NDK Jni 开发 简单例子
Android 开发了一段时间,一方面 ,感觉不留下点什么.有点对不起自己, 另一方面,好记性不如烂笔头,为了往后可以回头来看看,就当做是笔记,便决定开始写博客.废话不多说 ! 今天想搞一搞 ndk ...
- PDF二次开发_iStylePDF表单域的填充
wo讲到PDF表单,我们首先需要认识Adobe定义的PDF表单有哪些.以下是我从网上搜索到的简单介绍: PDF 表单简介 PDF 是可移植文档格式(Portable Document Format)的 ...
- 前端开发之jQuery效果篇
主要内容: 1.显示与隐藏效果 2.滑动效果 3.淡入与淡出效果 4.动画效果 5.弹出广告效果 一.显示与隐藏 显示与隐藏即 show() 和 hide() ,能够控制元素显示或隐藏. 实例: &l ...
- Go语言从入门到放弃(二) 优势/关键字
本来这里是写数据类型的,但是规划了一下还是要一步步来,那么本篇就先介绍一下Go语言的 优势/关键字 吧 本章转载 <The Way to Go>一书 Go语言起源和发展 Go 语 言 起 ...
- 3D打印:三维智能数字化创造(全彩)
3D打印:三维智能数字化创造(全彩)(全球第一本系统阐述3D打印与3D智能数字化的专业著作) 吴怀宇 编 ISBN 978-7-121-22063-0 2014年1月出版 定价:99.00元 42 ...
- inno setup介绍及官方网站地址
使 用 笔 记 1.Inno Setup 是什么?Inno Setup 是一个免费的 Windows 安装程序制作软件.第一次发表是在 1997 年,Inno Setup 今天在功能设置和稳定性上的竞 ...
随机推荐
- FrameWork中SQLServer数据源使用宏函数出错解决办法
环境:DW是SQLServer2008 建模工具:Cognos FrameWork Version:Cognos10.2 出现问题:在FM中创建查询主题,sql类型数据源,引入宏函数#CAMIDLis ...
- flex版本问题总结
转自:http://blog.csdn.net/holly_puck/article/details/6690264 最近公司平台在集成工作流时需要设计一个web版的流程定义设计器,初步定下来用Fle ...
- MyEclipse发布按钮无效的办法
删除存放您MyEclipse项目的目录下的“/.metadata/.plugins/org.eclipse.core.runtime/.settings/com.genuitec.eclipse.as ...
- Android系统源码学习步骤
Android系统是基于Linux内核来开发的,在分析它在运行时库层的源代码时,我们会经常碰到诸如管道(pipe).套接字(socket)和虚拟文件系统(VFS)等知识. 此外,Android系统还在 ...
- [Oracle] SQL*Loader 详细使用教程(5)- 典型例子
本文介绍SQL*Loader在实际使用过程中经常用到的典型例子. 1. 表中的列比数据文件的列要少怎么办? 假设一个csv的文件如下: a1,a2,a3,a4 b1,b2,b3,b4 c1,c2,c3 ...
- 为pc编译配置安装当前最新的内核
搜索公众号:itxxgh (IT学习干货),全公益.免费.定期,提供,<IT学习教程>.不会骚扰大家,仅仅需轻点关注,也会传播<中华传统文化>传播正能量. 或扫描二维码 1 ...
- 算法笔记_141:无向图的欧拉回路判断问题(Java)
目录 1 问题描述 2 解决方案 1 问题描述 Problem Description 欧拉回路是指不令笔离开纸面,可画过图中每条边仅一次,且可以回到起点的一条回路.现给定一个图,问是否存在欧拉回 ...
- js setTimeout和setInterval区别
1.区别 2.示例代码 <!DOCTYPE html> <html lang="zh"> <head> <meta charset=&qu ...
- 关于Csdn水区被占据一事 (2015-08-01)
例如以下图所看到的 水区被占据 ,假设发贴机不仅仅在水区发贴.也在其他版块也发贴,将不堪设想啊各位. 如今非常多站点也经历过被 注冊机,发贴机,乱炸,是非常可恨的事.可是您想想.为什么注冊机.发贴机会 ...
- MIME protocol 说明
按照 <张孝祥Java邮件开发详解> 自己create了 emali, 其中jpg 和wav文件格式过大,删除了写内容 From redhat@diego.com Mon Nov 17 0 ...