PHP开发大型Web应用浅析

这里所说的“大型”应用不是说像Google、eBay、Yahoo这类大型网站的具体实施,我也没有意图劝说读者放弃自己的概念和信仰,只是希望大家的系统可以运行得更快更流畅,可以承载更多的用户在线,希望可以给PHP的初学者一点帮助。

关于PHP的执行效率,网上的专题文章很多,多以PHP、Java几个阵营的争论开始,以一个不确定的期待结束,很少看见一个明确的结论。确实,程序的执行效率是很难从比较中得出的。应用的方面不同,执行环境不同,效率的差别会差得比较大。而且效率也是需要权衡的,大家都知道汇编语言很底层,可以写出非常高效的程序,但是我还很少,应该说是几乎没看过有人用汇编做Web开发,而且有能力用汇编写出高效程序的人似乎都是值得大家仰视的,哈哈~我们没有必要去讨论PHP和汇编到底差多少,只要知道自己的PHP和别人的PHP差多少就可以了。

首先,先要明确这篇文章的前提:必须有一台或更多的可以被自己操纵的服务器,而不是虚拟主机空间。毕竟可以在虚拟主机上运行的通用系统已经有了很多经典的作品和成熟的框架,效率挖掘已经被前辈们做得非常出色了,它们的很多理念也被现在很多PHP用户继承和发展,越来越多的所谓“框架”也像满天繁星一样,我也不想再去写那个,因为第一我自己的水平也不怎么样,写不出什么新鲜玩意来,写出来也招人笑,第二是写这个的文章太多了,说法也太多了,混乱是造成很多富有激情的未来天才程序员夭折的最大元凶。

在独立服务器上执行的程序和在虚拟主机上可以运行的程序在效率优化方面有着很大差别。您当然可以把一套discuz不加修改地安装在一台甚至一堆独立服务器上,不过,它真的得到最大的性能优化吗,您真的对得起这一堆服务器吗?

独立服务器指的是,使用者对这台机器有完全的控制权,包括安装、删除软件,配置系统参数甚至修改源代码。基于这样一个开放的硬件平台,性能也不仅仅是体现在速度上,还包括安全性、稳定性等。和虚拟主机不同,用户必须自己配置Web服务器参数,安装和配置PHP、数据库,以及安装各种乱七八糟的东西(我喜欢这么说),当然还要对它们负责。

首先提出几个名词:执行时间、模板、数据库封装、Cache、Buffer、Hash、守护进程、crontab。

执行时间,谁都知道,就是一个程序从执行开始到执行结束所用的时间。因为Web是瞬时的、无状态的,所以执行时间是Web程序执行效率的一个指标,它并不适合衡量C/S程序或者后台守护的程序,因为它们很多都是持续运行的。页面执行时间的一个典型例子就是Discuz论坛页面最下方的时间显式,通常Discuz都是几毫秒到几十毫秒,和所用的平台、数据量和当前系统压力有关。

模板大家再熟悉不过,虽然有很多人只是在用,但是不知道为什么在用。模板在传统上来说是划分逻辑层的一种途径,在MVC上结构里,它把表示层和下层分离,在实际使用中,它方便程序员和界面设计人员分工合作。然而,现在很多场合中,由于模板的不当使用,它非但没有起到促进程序员和界面设计人员分工合作,反倒成为程序员和美工互相仇视的罪魁(我好像在以前的帖子里这样说过),很多人在抱怨他们不得不花很多时间在整理模板上。

数据库封装似乎和Java的关系更大,它对多种数据库系统提供一个统一调用接口,通常是一些封装好的类,这些类有时也完成一些比如SQL检查、过滤等工作。PHPLIB里的DB封装、PEAR DB、Adodb等都很有名,用的人也很多。

Cache和Buffer看起来好像是一种东西,Cache叫做缓存而Buffer叫做缓冲。在硬件概念中,Cache的用途是连接两种速度不同的设备,比如寄存器和内存、CPU和PCI-Bus、IDE总线和硬盘。Buffer的原意是类似弹簧的一种缓冲器,用来减轻或吸收冲击的震动的东西。Buffer是一种数据预存取的方式,它用于临时存储数据并以与接收速度不同的速度传输。Buffer的更新方式可以是按时间间隔自动刷新,而Cache则更讲究“命中率”,将当前时间段使用频繁的少量数据放到高速设备中方便读写。在程序开发中,固然没有什么高速、低速设备,不过数据源是可以有不同读写效率的。对于少量数据,文本文件的读写通常就要比数据库存取效率好,而同样是文本文件读写,在tmpfs上的效率就要比直接的磁盘IO效率好。Buffer更多地体现在进程通信和队列上,很多时候并不是因为接收方没有能力更快地读取,而是没有必要更快地读取。

守护进程是一种在后台连续执行的程序,它通常是起到监视、控制流程、对外提供服务等作用。比如Apache本身就可以被理解成一个守护进程,虽然它实际上是由很多个经常更新的进程组成(主进程是固定的)。

Crontab是UNIX/Linux的定时程序,有点像Windows的“计划任务”,它设定在多少个时间间隔后或者是某一个时间点执行特定的程序。它通常用来完成自动更新、清除临时数据等一段时间自动执行一次的操作。

另外一个比较特别的概念(说它特别是相对于习惯了通用系统开发的人来说),是当我们拥有了一台独立的服务器之后,完全没必要把自己局限在PHP所能提供的功能范围内,当我们不知不觉地成为系统的主人后,要努力发现到这一点,我们有很多东西可以用的。PHP不是万能的(这简直是一定的),对于它的功能上的不足,完全可以用Perl来弥补,Perl做为一种通用语言,可以提供更多的功能选择,砂砾一样密的模块给这个随意得有些变态的语言提供了无穷的能量。对于PHP性能上的不足,完全可以用C来补充。PHP的根本就是由C继承来,PHP本身也是由C开发,用C来做PHP的扩展是完全合理的。

Linux本身就是由C和Perl在支撑(我这样说完全不是为了夸大Perl的地位,大家可以去看看一个标准的Linux中有多少Perl脚本,离开Perl之后这个系统是不是觉得像个残疾人)。PHP从C中继承了大部分的语法,从Perl中学习了大部分Web特性、函数和那个貌似与开源很矛盾的“$”符号(PHP早期就是一个Perl脚本)。

下面来分析我在使用的一些代码(注:Linux独立服务器适用。我好像已经放弃对Windows和虚拟主机做大型开发很长时间了)。里面使用了一些也许很熟悉也许很陌生也许很变态的方法。我的系统是RedHat AS3,没有什么特别的,PHP版本是4.4.0,MySQL是4.1。我从来没有刻意地去写一些必须用到PHP5的新特性的代码,除非真的必须用到。

我的Web根目录在/www下,Apache、PHP都是默认安装在/usr/local/下,MySQL是下载的编译好的二进制版本,我也一样把它丢在那里。因为只是用于测试,我不想它看起来很乱,至于在实际项目中,尤其是多台服务器的情况下,需要好好地部署一下你的系统。

为了使系统的结构清晰一些,我把需要使用的文件都放在了二级目录下面。

下面是通用头文件/includes/kernel/common.inc.php的一些片断:

﹤?php if (!defined('IN_BSG')) { exit; } ?﹥

上面的代码保证它只能被合法的程序所调用,而不会被其它的文件include。如果正在执行的程序没有定义一个'IN_BSG'常量,它在include这个common.inc.php之后程序会终止。

﹤?php list($usec, $sec) = explode(" ", microtime()); $page_time_start = $usec + $sec; ?﹥

这两行大家可能都会比较熟悉,这是计算程序的开始执行时间的。在程序结束之前,还会再计算一下这个,为的是得出程序执行所耗费的时间。如果你不在意这些,可以放心地把它注释掉。

PHP+MySQL信息发布的完整Web应用程序开发 B/S架构,即浏览器/服务器(Browser/Server)架构,是指用户通过Web浏览器访问和操作部署在服务器端的应用程序。该架构相较于传统的C/S(客户端/服务器)架构具有显著的优势:部署简单:用户无需安装复杂的客户端软件,只需通过浏览器即可访问系统。易维护性:所有的业务逻辑和数据处理都在服务器端进行,升级和维护工作集中在服务器端,大大减少了维护成本。跨平台性:由于是基于浏览器实现,B/S架构的应用可以在不同的操作系统平台上运行,用户操作界面一致性高。 阅读详情

相关推荐

MATLAB R2022b 安装教程

1. 下载安装先放资源链接,百度网盘太贵了不想续了,换了夸克网盘。1. 下载安装。

qq_51654158的博客 2万+

目前有哪些大型的项目还在坚持才用PHP开发的?

虽然现在有很多新兴的编程语言和框架,但PHP仍然是一个非常流行的服务器端编程语言,尤其是在Web开发领域。它提供了一个强大的后端管理界面,以及许多有用的功能,如商品管理、订单处理、付款和配送等。Laravel:Laravel是一个流行的PHP框架,它被广泛用于开发Web应用程序和API。Moodle:Moodle是一个流行的开源在线学习平台,由PHP编写。总之,PHP仍然是一个非常流行的编程语言,特别是在Web开发领域。尽管有许多新兴的编程语言和框架,但PHP仍然具有广泛的支持和使用。

2301_76418831的博客 664

SRT公网点对点传输及搭建SRT流媒体服务器

SRT是一种开源传输技术,它是基于UDP协议的,与RTMP不同的是,它具有高码率低延迟的传输特性,加强了在复杂不稳定网络环境中的传输可靠性,提升了不可预测的网络环境上的流传输性能。它不像NDI那样只适用于局域网传输,它更适用于公网环境下的信号传输。 S代表Secure,即安全加密的视频流,R代表Reliable,即具有从数据严重丢包中恢复的可靠性,T代表Transport,即动态适应变化的网络状况。 在音视频数据包传输的过程中,SRT会检测并适应两个传输点之间的实时网络状况,有助于补偿由于网络的拥塞而引起的

罗宇。的媒体技术工作室 1万+

PHP编程能开发哪些应用,极客编程必备的五大PHP开发应用

有了PHP应用可以帮助编码爱好者事半功倍,提升项目质量;有了这些最新的且灵活的PHP应用使创建编码项目更加简单、便捷。本文,我们收集了五大最新的PHP开发应用。PHP应用在网络上并不多见。最重要的是,很难找到有关这方面的资源。代码指南对于编程爱好者来说非常重要且是必备的,因为它能为你节省大量的时间,让你自由编码。PHP编码者需要掌握该领域的新技术,并且在项目中必须运用新的功能。有了PHP应用可以帮...

weixin_32188111的博客 349

BCIC IV 2a数据集:从下载到实战应用全解析

本文全面解析了BCI Competition IV 2a(BCIC IV 2a)数据集的应用流程。从官方渠道下载数据、解析其结构,到在MATLAB和Python环境中进行数据导入、预处理(包括处理特殊受试者A04T),并详细演示了从特征提取(如CSP)到分类(如LDA、SVM)的完整实战步骤,为脑机接口研究者提供了从入门到实践的清晰指南。

weixin_28235513的博客 972

PCL 动态半径滤波【2025最新版】

使用PCL实现的2022年最新SCI论文——【Design of Dust-Filtering Algorithms for LiDAR Sensors Using Intensity and Range Information in Off-Road Vehicles】 一文中提出用于自动驾驶点云剔除粉尘、雨雪等影响因素导致的噪声点滤波算法。

点云侠的博客 1472

构建 PHP Web 应用程序:PHP 中的 Web 应用程序

PHP 是一种服务器端脚本语言,广泛用于开发动态 Web 应用程序。在 Web 开发领域,PHP 支持创建功能丰富的交互式网站。凭借其嵌入式 HTML 功能,PHP 将服务器端逻辑与客户端表示无缝集成,从而促进了动态和数据驱动内容的创建。PHP 的可扩展性、跨平台兼容性以及与 MySQL 等数据库交互的能力使其成为打造响应式和引人入胜的 Web 体验的基石。

新华编程特战队 2510

SAP BW/4HANA 项目字段级数据血缘分析的方法与工具

利用SAP自带工具可以在一定程度上查看数据流和字段使用情况,但往往需要人工逐步深挖。适用于简单场景或验证单个字段的映射。借助SAP数据治理解决方案(如 Information Steward、Data Intelligence 等)能够自动整合元数据,提供图形化、跨系统的血缘分析,适合对数据 lineage 有严格要求的企业级项目。第三方工具则提供了灵活强大的功能,如自动文档、生成功能丰富的报告,对于复杂环境下的血缘分析和影响分析非常有帮助。自行开发SQL/CDS脚本。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 470

如何用PHP语言进行Web开发,有什么优势

前台卖力与用户的交互,表示数据。可以用C#,java,vb,PHP等语言。微信开发即微信"平台开发,将企业信息、办事、运动等内容经由过程微信网页的方法进行表示,用户经由过程简略的设置,就可以天生微信3G网站。7、支撑面向工具与进程:支撑面向工具和进程的两种风格开发,并可向下兼容。中,以脚本语言为主,内置丰富函数,语言简略、书写简略,方便学习掌握。2、跨平台特性:PHP几乎支撑所有的操作系统平台,而且支撑。3、支撑普遍的数据库:可操纵多种支流与非支流的数据库。1、平安性高:PHP具备公认的平安机能。

xiaoweids的博客 319

在 SAP ABAP 里可靠地对接 FTP 服务器:从连接、命令到传输与排错的完整实战

本文详细介绍了在SAP ABAP中实现FTP文件交换的完整技术方案。文章首先解析了FTP协议的双连接特性(控制连接与数据连接),强调保持控制连接的重要性。随后详细说明了ABAP中FTP操作的四步标准流程:建立连接(包含HTTP_SCRAMBLE加密)、执行命令、断开连接和关闭RFC通道。文章提供了实战案例代码,演示如何将FTP文件复制到应用服务器再读取进内表处理,特别指出后台作业与前台操作的关键差异。最后总结了常见错误排查要点,包括连接模型、路径设置和资源释放等问题。全文通过SAP标准函数模块的调用顺序、典

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 305

[毕设项目-MCP+ENSP]一句话搞定ENSP自动化:MCP + LLM实战(架构图、工具清单、踩坑全解)

用 MCP + LLM 把“人话”变成对华为 ENSP 的安全自动化操作,三款工具覆盖配置/查询/落盘,配套架构、实战与排坑清单。

逐梦苍穹的博客 2537

为什么说用PHP开发大型系统令人不爽

为什么说用PHP开发大型系统令人不爽 来自:太平洋电脑网 笔者在过去的四年里一直致力于PHP应用的开发。PHP确实十分容易编写。但是PHP也有一些十分严重的缺陷。   下面笔者会给出自己的理由,为什么PHP不适合于比小型业余网站更大的网站。   1. 对递归的不良支持   递归是一种函数调用自身的机制。这是一种强大的特性可以把某些复杂的东西变得很简单。有一个使用递归的例子是快速排序...

xiaoer 1219

【推荐100个unity插件之10】Unity Cinemachine最全的最详细的虚拟相机介绍,详细案例讲解,快速上手

相信很多同学都用过Unity的Cinemachine插件,使用它可以很方便地实现一些摄像机效果,比如摄像机追踪、推拉镜头、分镜等效果。Cinemachine的知识特别的多又很常用,本来是想做一期来讲一下的,结果搜索发现已经有人做过了,而且内容挺全的,但是内容可能比较啰嗦,还有部分没有补充,所以我就先转载下来,后续有时间再优化修改补充,觉得内容不错的,很欢迎大家去支持原作者。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 2万+

php开发的大型网站有哪些

如果我们将目光投向这方面的话,PHP作为一种成熟稳定的Web开发语言,在众多领域都有着广泛的应用。无论你是初学者还是经验丰富的专业人士,掌握好这门技能都将为你打开通往无限可能的大门。希望本文能够帮助大家更好地理解PHP及其应用场景,激发起你探索这一领域的兴趣!

ABc1237950的博客 1353

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

开发大型web应用,你会选择什么作为后端语言?

本文是转载,原文地址:http://www.iteye.com/news/25729 近日,Hacker News中有一个问题引起了广泛的讨论:如果要开发一个大型的web应用程序,你会选择什么编程语言来进行后端开发,要考虑到开发时间、成本和可维护性。  以下是部分回复:  1.  Java  hendzen 写道 对于一个“大型”的web应用,我会老老实实地使用J

小黑的技术笔记 1万+

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

php开发的大型网站

对于任何成功的Web项目而言,彻底的需求分析是至关重要的第一步。这就导致了一个问题,还应当考虑到网站的安全性、用户体验等因素,为后续的设计和实现打下坚实的基础。随着PHP生态系统的不断壮大,市面上出现了众多优秀的开发框架,每种都有自己的优势所在。这个问题的关键是,在设计之初就应当充分考虑未来的扩展可能性,避免因架构缺陷而导致后期难以维护的局面发生。只有通过严谨的需求分析、明智的技术选型、科学的数据库规划、高效的代码编写以及严格的测试验证等各个环节紧密配合,才能最终打造出既稳定可靠又具有良好用户体验的产品。

chatgpt001的博客 742

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

PHP语言的Web开发

该系统允许管理员添加、查询、更新和删除书籍信息。系统结构包括文档资料库、用户管理和基本的访问控制功能。

2501_90300606的博客 1731

[转]PHP大型Web应用入门(一)

PHP大型Web应用入门(一)作者:奶瓶来源:http://www.phpx.com/happy/viewthread.php?tid=110678这里所说的“大型”应用不是说像Google、eBay、Yahoo这类大型网站的具体实施,我也没有意图劝说读者放弃自己的概念和信仰,只是希望大家的系统可以运行得更快更流畅,可以承载更多的用户在线,希望可以给PHP的初学者一点帮助。    关于PHP的

软件开发资料汇总 730

web应用开发

web 入门运维图一 安装工具。

2203_76007723的博客 2151

web应用系统开发php第二版

在互联网技术日益发展的今天,Web应用系统已经成为我们日常生活和工作中不可或缺的一部分。Web应用系统指的是通过网络浏览器访问的应用程序,它能够为用户提供信息查询、在线交易、社交媒体互动等多种服务。在《Web应用系统开发PHP第二版》中,我们将深入探讨如何利用PHP来创建高效且功能丰富的Web应用程序。虽然PHP主要用于后端开发,但了解一些前端技术同样重要,因为最终呈现在用户面前的是整个网站的整体体验。通过遵循以上步骤,《Web应用系统开发PHP第二版》旨在帮助读者掌握从构思到发布完整Web项目的全过程。

2401_88951047的博客 607

php论文开发环境,PHP环境下Web应用设计开发

摘要:PHP是被广泛使用的Web应用开发语言之一。阐述了PHP开发Web应用的工作原理和流程, 介绍了PHP开发环境的配置, 通过实例演示, 实现了PHP开发Web应用。实践表明, PHP开发环境构建简单容易, 使用PHP能方便快速地建立动态交互的Web系统和实现Web应用的开发。关键词:PHP语言; Web应用开发; Web服务器;1、PHPPHP是PHP Hypertext Preproces...

weixin_35890416的博客 710

PHP大型Web应用入门

这里所说的“大型”应用不是说像Google、eBay、Yahoo这类大型网站的具体实施,我也没有意图劝说读者放弃自己的概念和信仰,只是希望大家的系统可以运行得更快更流畅,可以承载更多的用户在线,希望可以给PHP的初学者一点帮助。   关于PHP的执行效率,网上的专题文章很多,多以PHP、Java几个阵营的争论开始,以一个不确定的期待结束,很少看见一个明确的结论。确实,程序的执行效率是很难从比较中得

myway的专栏 638

Web开发——PHP vs Java

比较PHP和JSP这两个Web开发技术,在目前的情况是其实是比较PHP和Java的Web开发。以下是我就几个主要方面进行的比较: 一、 语言比较 PHP是解释执行的服务器脚本语言,首先php有简单容易上手的特点。语法和c语言比较象,所以学过c语言的程序员可以很快的熟悉php的开发。而java需要先学好java的语法和熟悉一些核心的类库,懂得面向对象的程序设计方法。所以java不如php好学。

guanning0109的专栏 1853
上一篇: 如何学习一个新的PHP框架
下一篇: 理解PHP中的MVC框架编程
SleepInDelphi
博客等级 码龄19年 32粉丝 388原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值