LAMP架构下的Web开发概念、流程及优化策略(二)

简介:

六、目前流行的PHP框架 

应用场景二: M (业务模型,应用者编写)

C (业务控制器,应用者编写,由框架控制器自动载入)

V (视图,应用者编写,框架自动载入)

现实中复杂应用场景:

1.用户请求: http://domain/blog/list/

2.分析URL,实例化逻辑控制类blog,执行方法list

3.在控制类news,又分别实例化业务模型类bloguser,并做相应处理.

4.业务模型类blog,user,调用数据模型(专用,M),对数据进行处理.

5.回到逻辑控制类中,展现视图$this->view->output( );

 

运用中需要注意的地方

 PHP没有持久层,每一次访问请求都是独立运行,建立的模型对象不能持久存在,无法跨访问复用.如果框架/应用的设计过于繁琐,每次装载/初始化都会浪费不少时间.

 各层之间的耦合度尽量降到最低,尤其是业务模型和业务逻辑之间要尽量分离.以便日后修改或复用.

 PHP本身只有较少功能是抛出异常,大部份是抛出错误(Notice,warning,error),代码编写中应时常对应用环境的正确性做手工检查,不符合条件时手工抛出异常,并设置异常接收器统一处理

 

 单入口模式

http://domain/index.php?control=blog&action=list

http://domain/index.php?control=news&action=read

 多入口模式

http://domain/blog.php?action=list

http://domain/news.php?action=read

 PathInfo模式

http://domain/index.php/blog/list/

http://domain/index.php/news/read/

 Rewrite模式

http://domain/blog/list/

http://domain/news/read/

Rewritepathinfo的好处:对搜索引擎友好,对用户更直观

 

九、数据库抽象层、Active recode

 数据库抽象层的作用

减少与具体数据库的底层接触,提供跨数据库平台的访问接口,以实现数据操作与数据库类型的无关性.方便数据库系统的迁移变更.

 PHP本身提供的抽象层

Pear::DB(php4),PDO(php5,6)

 框架中引入的各种类Active Recode系统

目的:将数据库字段与映射到对象,不用关心具体的SQL语句,只需要操作数据对象及调用相关的方法即可实现数据的CRUD操作。

好处:模型化了数据库,快捷开发,是数据库抽象层的进一步进化。

缺点:对于复杂数据模型的处理较为无力,例如多表连查、子查询。

缺乏灵活性,比如只想要一列数据,却取出了整行。

与数据库字段名的耦合度太高。如通过配置改进,执行效率又打折扣。

难以应付复杂的Web环境。(多种数据库,分布式数据库,缓存系统介入)

 

十、模板引擎

  

 为什么引入模板引擎

视图:在web开发中通常就是指前端页面。模板引擎的引入,是为了实现视图层的分离,降低视图与逻辑、模型部份的耦合度。使得前端页面与程序部份可以并行工发、轻松整合的工具

 常见的模板引擎及特点

PHP中常用的模板引擎有 Smarty, SmartTemplate

其中smarty提供了强劲的功能,STE则非常轻巧。

两者的核心原理,都是将页面中的变量标签替换成通过assign方法注册的PHP运行变量,并将替换后的页面(“编译”后的页面文件)生成缓存保存在磁盘中。或者提供一定的逻辑控制功能供前端使用。这样即方便将程序和视图分离,使前端设计人员更着重于表现和数据,而不用关心程序上的流程.

 缺点

初次加载模板时,因生成缓存,需要额外的处理开销和IO开销

之后加载模板时,会判断模板文件的最后修改时间是否大于生成的缓存文件时间,亦有一定的额外IO开销.

 

使用模板引擎的注意事项

 

 

 

八、访问模式 

 

 Qee /FleaPHP (领域设计驱动)
 ThinkPHP (大的类库J
 Zend FrameworkPearOOP版)
 Yii 
 KiwiPHP (工业微内核)
 Symfony (配置最简单)

七、WEB中的MVC开发模式

应用场景一: M (数据模型,框架提供)

C (控制器,框架实现)

V (视图,应用者编写,框架自动载入)

应用者编写的,是供控制器装载的业务处理类

 

 

 尽量折分公用组件。

 

 不要在视图中使用太多的控制语句

就以前的经验来看,简单的if,变量循环输出即已足够。

在视图中加入太多的控制语句会带来的问题,是对设计思想的破坏,因为它打乱了将视图层独立出来的最初目的,让前端的设计人员不得不过多的关注“程序”而非页面本身。要不然就得由程序员最终回头修改前端设计人员已经做好的模板文件。

更重要的一点时:如果在模板中引入太多的控制语句,那还不如直接在页面中写<?php ,因为PHP的本身就是模板引擎。无论哪种都快不过它。

所以,尽量将控制放在PHP程序体内,不要放到视图中去跑.

 

十一、LAMP架构下的加速系统

 

 

十二、各级加速系统说明

 

 

 

 WEB服务层

Nginx :自身支持反向代理,提供简单的负载均衡及从错机制,能很方便的搭建起web服务集群.

Lighttpd:超轻量,合适搭建静态访问服务器

Squid:对动态内容亦能做缓存处理.

 PHP

APC:缓存opcode,减少了扫描和编译阶段,但仍无法实现持久对象.纯脚本效率提高在200%--500%,应用场景下实测通常能提高效率一倍.

XCACHE

 数据层

共享内存

Memcache: Key=>Value对形式的内存数据缓存服务.基于TCP连接.常用于缓存数据库查询结果.支持分布式.

缺点:关机即无,每次连接的时间开销大.

 

 

 

 

推荐的工具

 

 Editplus+PHP

 XDEBUG+Eclipse PDT

 SmartTemplate

Xdebug+ WinCacheGrind
 

 













本文转自百度技术51CTO博客,原文链接:http://blog.51cto.com/baidutech/748346 ,如需转载请自行联系原作者
相关文章
|
2天前
|
存储 监控 API
构建高效微服务架构:后端开发的现代实践
【5月更文挑战第9天】 在本文中,我们将深入探讨如何在后端开发中构建一个高效的微服务架构。通过分析不同的设计模式和最佳实践,我们将展示如何提升系统的可扩展性、弹性和维护性。我们还将讨论微服务架构在处理复杂业务逻辑和高并发场景下的优势。最后,我们将分享一些实用的工具和技术,以帮助开发者实现这一目标。
|
4天前
|
API 持续交付 开发者
构建高效微服务架构:后端开发的新视角
【5月更文挑战第8天】 随着现代软件开发的演变,微服务架构已经成为了企业追求敏捷、可扩展和灵活部署的重要解决方案。本文将深入探讨如何构建一个高效的微服务架构,包括关键的设计原则、技术栈选择以及持续集成与部署的最佳实践。我们还将讨论微服务带来的挑战,如数据一致性、服务发现和网络延迟,并提出相应的解决策略。通过本文,后端开发者将获得构建和维护微服务系统所需的深度知识,并了解如何在不断变化的技术环境中保持系统的健壮性和可维护性。
37 8
|
2天前
|
监控 持续交付 开发者
构建高效微服务架构:后端开发的新范式
【5月更文挑战第10天】在现代软件开发领域,微服务架构已经成为一种流行的设计模式,它通过将大型应用程序拆分为一组小型、独立和松散耦合的服务来提供更高的可伸缩性和灵活性。本文深入探讨了微服务架构的设计理念、实施步骤以及面临的挑战,并提出了一套实用的策略和最佳实践,帮助后端开发者构建和维护高效的微服务系统。
|
2天前
|
SQL canal 运维
MySQL高可用架构探秘:主从复制剖析、切换策略、延迟优化与架构选型
MySQL高可用架构探秘:主从复制剖析、切换策略、延迟优化与架构选型
|
3天前
|
Kubernetes 持续交付 开发者
构建高效微服务架构:后端开发的新趋势
【5月更文挑战第8天】 随着现代软件开发的不断演进,微服务架构已成为众多企业解决复杂系统问题的首选方案。本文深入探讨了微服务架构的核心概念、设计原则以及实施策略,旨在为后端开发者提供一种清晰、高效的技术路径。通过分析微服务的优势与挑战,结合具体的应用实例,文章将展示如何通过容器化、服务网格和持续集成/持续部署(CI/CD)等先进技术手段,实现后端服务的高可用性、可扩展性和敏捷性。
|
3天前
|
消息中间件 监控 Java
构建高效微服务架构:后端开发的新趋势
【5月更文挑战第8天】随着现代软件开发的复杂性日益增加,传统的单体应用架构逐渐难以满足快速迭代和灵活部署的需求。微服务架构作为一种新的解决方案,以其模块化、独立性强和易于扩展的特点,正在成为后端开发领域的重要趋势。本文将深入探讨如何构建一个高效的微服务架构,并分析其对后端开发实践的影响。
|
4天前
|
敏捷开发 持续交付 API
构建高效微服务架构:后端开发的现代实践
【5月更文挑战第8天】 在数字化转型的浪潮中,微服务架构已成为企业追求敏捷开发、持续交付和系统弹性的关键解决方案。本文将深入探讨微服务的核心概念,包括其设计原则、优缺点以及如何在后端开发中实现高效的微服务架构。我们将通过实际案例分析,展示微服务如何帮助企业快速适应市场变化,同时保持系统的可维护性和扩展性。
|
4天前
|
监控 云计算 开发者
探索云计算中的无服务器架构:从概念到实践
无服务器架构作为云计算领域的新兴技术,正在以其高效、灵活的特性吸引着越来越多的开发者和企业。本文将深入探讨无服务器架构的概念及其在云计算中的应用,通过实际案例展示如何利用无服务器架构构建可靠、可扩展的应用系统。
|
5天前
|
缓存 负载均衡 安全
深入探索Nginx高性能Web服务器配置与优化
【5月更文挑战第7天】本文深入探讨了Nginx的配置与优化,重点介绍了基础配置参数如`worker_processes`、`worker_connections`和`keepalive_timeout`,以及优化策略,包括使用epoll事件驱动模型、开启gzip压缩、启用缓存、负载均衡和安全配置。此外,还提到了性能调优工具,如ab、nginx-stats和nmon,以助于提升Nginx的性能和稳定性。
|
5天前
|
设计模式 Kubernetes 数据库
构建高效可靠的微服务架构:后端开发的新范式
【5月更文挑战第7天】在现代软件开发的浪潮中,微服务架构已经成为一种流行的设计模式。它通过将应用程序分解为一组小的、独立的服务来提高系统的可维护性和扩展性。本文深入探讨了微服务架构的核心概念、优势以及如何利用最新的后端技术构建一个高效且可靠的微服务体系。我们将讨论关键的设计原则,包括服务的独立性、通信机制、数据一致性和容错性,并展示如何在云环境中部署和管理这些服务。
18 3