如何使用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 今天在功能设置和稳定性上的竞 ...
随机推荐
- 【3】利用Word模板生成文档的总结
阅读目录 Word二次开发概况 使用DsoFramer进行开发 使用Interop进行开发 打开.关闭和写入操作 批量替换文本 遍历段落替换文本 查找后逐个替换文本 结论 在各类应用系统开发中,和Wo ...
- Mysql创建、删除用户、查询所有用户等教程,提升您的MYSQL安全度!
建议您不要使用mysql的root账号来为您的web页面连接数据库,这可能会导致用户通过网页获取到您的数据库账号密码,存在严重的安全隐患. 建议新建一账号,权限设置基本够用,然后使用那新建的账号来连接 ...
- IOS客户端Coding项目记录(二)
9:第三方插件整理 JSON转实体:jsonModel https://github.com/icanzilb/JSONModel/ 美化按键:BButton https://github.com/m ...
- Java之逆向工程(1) - 反编译、修补和逆向工程技术 读书笔记
透视JAVA——反编译.修补和逆向工程技术 读书笔记 1. Java source is not compiled to binary machine code like C/C++ source ...
- 【linux】查看内存和CPU使用情况
1.内存命令:free 解释:以上数据单位KB. 所以,上面的mem物理内存共1G 下面是对这些数值的解释: total:总计物理内存的大小. used:已使用多大. free:可用有多少. Shar ...
- 【JS】jQuery中将数组转换成字符串join()和push()使用
1.push()将元素依次添加至数组:2.join()将数组转换成字符串,里面可以带参数分隔符,默认[,] <script type = text/javascript> $(docume ...
- cocos2d-html5学习笔记(六)--alpha2中cc.Sequence.create中的bug
cocos2d-html5学习笔记(六)--alpha2中cc.Sequence.create中的bug http://blog.csdn.net/allenice1/article/details/ ...
- NPN/PNP和N沟道/P沟道负载的接法
N沟道mos管和p沟道mos管负载的接法不一样,随意接的话导致VGS不满足条件:如下图N沟道接法,下拉电阻R2必须接,否则电路状态不稳定. 三极管原理类似如下图(满足三极管导通条件) NPN型三极管: ...
- Atitit.软件仪表盘(4)--db数据库子系统-监测
Atitit.软件仪表盘(4)--db数据库子系统-监测 连接数::: 死锁表列表:死锁基础列表(最近几条记录,时间,sql等) 3.对服务器进行监控,获取CUP,I/O使用情况 4.对数据库进行 ...
- win32之hPrevInstance
看了一篇博客上面说,WinMain函数中的hPrevInstance是上一个示例的句柄,我就想到可不可以使用这个来实现只能运行一个实例呢? int WINAPI WinMain(HINSTANCE h ...