More Related Content Similar to Lamp架构下的web开发 (20) Lamp架构下的web开发3. 架构设计 浏览器版本,系统环境等 Nginx Apache IIS…. Jquery,EXT…. Mysql MSSQL ORACLE Php Python Ruby java Memcache APC 共享内存……. 按钮 菜单 ….. 布局层次 CSS结构 前端细节约定 图片分离 小文件存放 分布式存放 5. Nginx 优点:原生支持反向代理,带有简单的负载均衡及容错机制。速度最快。(10%-1000%),占用资源很少。 缺点:文档较少,手工配置,只能以fast-cgi方式运行php. Apache 优点:文档丰富,稳定(!?),应用环境多。 缺点:占用资源较多,高压力下表现性能不如nginx或lighttpd,手工配置。 IIS 优点:文档丰富,win平台下安装简单配置方便 缺点:不支持跨平台,性能低下。 各类web服务器优缺点比较 11. Qee /FleaPHP (领域设计驱动) ThinkPHP (大的类库 ) Zend Framework (Pear的OOP版) Yii KiwiPHP (工业微内核) Symfony (配置最简单) 目前流行的PHP框架 12. WEB中的MVC开发模式 应用场景一: M (数据模型,框架提供) C (控制器,框架实现) V (视图,应用者编写,框架自动载入) 应用者编写的,是供控制器装载的业务处理类. 应用场景二: M (业务模型,应用者编写) C (业务控制器,应用者编写,由框架控制器自动载入) V (视图,应用者编写,框架自动载入) 现实中复杂应用场景: 1.用户请求: http://domain/blog/list/ 2.分析URL,实例化逻辑控制类 blog,执行方法 list 3.在控制类 news中,又分别实例化业务模型类 blog和user,并做相应处理. 4.业务模型类 blog,user中,调用数据模型(专用,非M层),对数据进行处理. 5.回到逻辑控制类中,展现视图 $this->view->output( ); 13. PHP没有持久层,每一次访问请求都是独立运行,建立的模型对象不能持久存在,无法跨访问复用.如果框架/应用的设计过于繁琐,每次装载/初始化都会浪费不少时间. 各层之间的耦合度尽量降到最低,尤其是业务模型和业务逻辑之间要尽量分离.以便日后修改或复用. PHP本身只有较少功能是抛出异常,大部份是抛出错误(Notice,warning,error),代码编写中应时常对应用环境的正确性做手工检查,不符合条件时手工抛出异常,并设置异常接收器统一处理 运用中需要注意的地方 17. 尽量折分公用组件。 不要在视图中使用太多的控制语句 就以前的经验来看,简单的if,变量循环输出即已足够。 在视图中加入太多的控制语句会带来的问题,是对设计思想的破坏,因为它打乱了将视图层独立出来的最初目的,让前端的设计人员不得不过多的关注“程序”而非页面本身。要不然就得由程序员最终回头修改前端设计人员已经做好的模板文件。 更重要的一点时:如果在模板中引入太多的控制语句,那还不如直接在页面中写<?php ,因为PHP的本身就是模板引擎。无论哪种都快不过它。 所以,尽量将控制放在PHP程序体内,不要放到视图中去跑. 使用模板引擎的注意事项 19. WEB服务层 Nginx :自身支持反向代理,提供简单的负载均衡及从错机制,能很方便的搭建起web服务集群. Lighttpd:超轻量,合适搭建静态访问服务器 Squid:对动态内容亦能做缓存处理. PHP层 APC:缓存opcode,减少了扫描和编译阶段,但仍无法实现持久对象.纯脚本效率提高在200%--500%,应用场景下实测通常能提高效率一倍. XCACHE 数据层 共享内存 Memcache: Key=>Value 对形式的内存数据缓存服务.基于TCP连接.常用于缓存数据库查询结果.支持分布式. 缺点:关机即无,每次连接的时间开销大. 各级加速系统说明