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 ,如需转载请自行联系原作者
相关文章
|
1月前
|
机器学习/深度学习 人工智能 文件存储
Llama Nemotron:英伟达开源基于Llama架构优化的推理模型,253B参数持平DeepSeek R1!
NVIDIA推出的Llama Nemotron系列推理模型,基于Llama架构优化,包含Nano/Super/Ultra三款,在数学推理、编程和工具调用等任务中展现卓越性能。
71 5
Llama Nemotron:英伟达开源基于Llama架构优化的推理模型,253B参数持平DeepSeek R1!
|
29天前
|
数据采集 运维 Serverless
云函数采集架构:Serverless模式下的动态IP与冷启动优化
本文探讨了在Serverless架构中使用云函数进行网页数据采集的挑战与解决方案。针对动态IP、冷启动及目标网站反爬策略等问题,提出了动态代理IP、请求头优化、云函数预热及容错设计等方法。通过网易云音乐歌曲信息采集案例,展示了如何结合Python代码实现高效的数据抓取,包括搜索、歌词与评论的获取。此方案不仅解决了传统采集方式在Serverless环境下的局限,还提升了系统的稳定性和性能。
|
1月前
|
弹性计算 负载均衡 网络协议
阿里云SLB深度解析:从流量分发到架构优化的技术实践
本文深入探讨了阿里云负载均衡服务(SLB)的核心技术与应用场景,从流量分配到架构创新全面解析其价值。SLB不仅是简单的流量分发工具,更是支撑高并发、保障系统稳定性的智能中枢。文章涵盖四层与七层负载均衡原理、弹性伸缩引擎、智能DNS解析等核心技术,并结合电商大促、微服务灰度发布等实战场景提供实施指南。同时,针对性能调优与安全防护,分享连接复用优化、DDoS防御及零信任架构集成的实践经验,助力企业构建面向未来的弹性架构。
186 76
|
16天前
|
缓存 监控 安全
301重定向进阶指南:从基础配置到企业级架构优化
本文深入探讨网站重定向的高级技巧与企业级实现,涵盖正则表达式重定向、权重无损迁移、分布式系统适配等核心内容。通过解析301/302状态码区别及应用场景,结合Nginx、Apache配置示例,帮助开发者优化大规模网站重定向逻辑。同时,文章介绍CDN边缘重定向、微服务架构下的规则管理以及容灾设计,确保高性能与安全性。最后提供全链路监控方案和经典案例分析,助你规避流量损失风险,提升SEO表现。
95 38
|
20天前
|
存储 机器学习/深度学习 算法
阿里云X86/ARM/GPU/裸金属/超算等五大服务器架构技术特点、场景适配与选型策略
在我们选购阿里云服务器的时候,云服务器架构有X86计算、ARM计算、GPU/FPGA/ASIC、弹性裸金属服务器、高性能计算可选,有的用户并不清楚他们之间有何区别。本文将深入解析这些架构的特点、优势及适用场景,帮助用户更好地根据实际需求做出选择。
|
2月前
|
关系型数据库 MySQL 数据库
基于Flink CDC 开发,支持Web-UI的实时KingBase 连接器,三大模式无缝切换,效率翻倍!
TIS 是一款基于Web-UI的开源大数据集成工具,通过与人大金仓Kingbase的深度整合,提供高效、灵活的实时数据集成方案。它支持增量数据监听和实时写入,兼容MySQL、PostgreSQL和Oracle模式,无需编写复杂脚本,操作简单直观,特别适合非专业开发人员使用。TIS率先实现了Kingbase CDC连接器的整合,成为业界首个开箱即用的Kingbase CDC数据同步解决方案,助力企业数字化转型。
308 5
基于Flink CDC 开发,支持Web-UI的实时KingBase 连接器,三大模式无缝切换,效率翻倍!
|
7月前
|
XML JSON API
ServiceStack:不仅仅是一个高性能Web API和微服务框架,更是一站式解决方案——深入解析其多协议支持及简便开发流程,带您体验前所未有的.NET开发效率革命
【10月更文挑战第9天】ServiceStack 是一个高性能的 Web API 和微服务框架,支持 JSON、XML、CSV 等多种数据格式。它简化了 .NET 应用的开发流程,提供了直观的 RESTful 服务构建方式。ServiceStack 支持高并发请求和复杂业务逻辑,安装简单,通过 NuGet 包管理器即可快速集成。示例代码展示了如何创建一个返回当前日期的简单服务,包括定义请求和响应 DTO、实现服务逻辑、配置路由和宿主。ServiceStack 还支持 WebSocket、SignalR 等实时通信协议,具备自动验证、自动过滤器等丰富功能,适合快速搭建高性能、可扩展的服务端应用。
403 3
|
2月前
|
机器学习/深度学习 开发框架 API
Python 高级编程与实战:深入理解 Web 开发与 API 设计
在前几篇文章中,我们探讨了 Python 的基础语法、面向对象编程、函数式编程、元编程、性能优化、调试技巧以及数据科学和机器学习。本文将深入探讨 Python 在 Web 开发和 API 设计中的应用,并通过实战项目帮助你掌握这些技术。
|
6月前
|
存储 前端开发 JavaScript
如何在项目中高效地进行 Web 组件化开发
高效地进行 Web 组件化开发需要从多个方面入手,通过明确目标、合理规划、规范开发、加强测试等一系列措施,实现组件的高效管理和利用,从而提高项目的整体开发效率和质量,为用户提供更好的体验。
158 63
|
6月前
|
开发框架 搜索推荐 数据可视化
Django框架适合开发哪种类型的Web应用程序?
Django 框架凭借其强大的功能、稳定性和可扩展性,几乎可以适应各种类型的 Web 应用程序开发需求。无论是简单的网站还是复杂的企业级系统,Django 都能提供可靠的支持,帮助开发者快速构建高质量的应用。同时,其活跃的社区和丰富的资源也为开发者在项目实施过程中提供了有力的保障。
228 62