电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

PHP開發(fā)大型Web應用淺析

瀏覽:71日期:2024-01-13 13:13:31

關于PHP的執(zhí)行效率,網上的專題文章很多,多是PHP、Java幾個陣營的爭論;應用的方面不同,執(zhí)行環(huán)境不同,效率的差別會差得比較大。這里所說的“ 大型”應用不是說像Google、eBay、Yahoo這類大型網站的具體實施,只是希望大家的系統可以運行得更快更流暢,可以承載更多的用戶在線,希望可以給PHP的初學者一點幫助。

這里所說的“大型”應用不是說像Google、eBay、Yahoo這類大型網站的具體實施,我也沒有意圖勸說讀者放棄自己的概念和信仰,只是希望大家的系統可以運行得更快更流暢,可以承載更多的用戶在線,希望可以給PHP的初學者一點幫助。

關于PHP的執(zhí)行效率,網上的專題文章很多,多以PHP、Java幾個陣營的爭論開始,以一個不確定的期待結束,很少看見一個明確的結論。確實,程序的執(zhí)行效率是很難從比較中得出的。應用的方面不同,執(zhí)行環(huán)境不同,效率的差別會差得比較大。而且效率也是需要權衡的,大家都知道匯編語言很底層,可以寫出非常高效的程序,但是我還很少,應該說是幾乎沒看過有人用匯編做Web開發(fā),而且有能力用匯編寫出高效程序的人似乎都是值得大家仰視的,哈哈~我們沒有必要去討論PHP和匯編到底差多少,只要知道自己的PHP和別人的PHP差多少就可以了。

首先,先要明確這篇文章的前提:必須有一臺或更多的可以被自己操縱的服務器,而不是虛擬主機空間。畢竟可以在虛擬主機上運行的通用系統已經有了很多經典的作品和成熟的框架,效率挖掘已經被前輩們做得非常出色了,它們的很多理念也被現在很多PHP用戶繼承和發(fā)展,越來越多的所謂“框架”也像滿天繁星一樣,我也不想再去寫那個,因為第一我自己的水平也不怎么樣,寫不出什么新鮮玩意來,寫出來也招人笑,第二是寫這個的文章太多了,說法也太多了,混亂是造成很多富有激情的未來天才程序員夭折的最大元兇。

在獨立服務器上執(zhí)行的程序和在虛擬主機上可以運行的程序在效率優(yōu)化方面有著很大差別。您當然可以把一套discuz不加修改地安裝在一臺甚至一堆獨立服務器上,不過,它真的得到最大的性能優(yōu)化嗎,您真的對得起這一堆服務器嗎?

獨立服務器指的是,使用者對這臺機器有完全的控制權,包括安裝、刪除軟件,配置系統參數甚至修改源代碼。基于這樣一個開放的硬件平臺,性能也不僅僅是體現在速度上,還包括安全性、穩(wěn)定性等。和虛擬主機不同,用戶必須自己配置Web服務器參數,安裝和配置PHP、數據庫,以及安裝各種亂七八糟的東西(我喜歡這么說),當然還要對它們負責。

首先提出幾個名詞:執(zhí)行時間、模板、數據庫封裝、Cache、Buffer、Hash、守護進程、crontab。

執(zhí)行時間,誰都知道,就是一個程序從執(zhí)行開始到執(zhí)行結束所用的時間。因為Web是瞬時的、無狀態(tài)的,所以執(zhí)行時間是Web程序執(zhí)行效率的一個指標,它并不適合衡量C/S程序或者后臺守護的程序,因為它們很多都是持續(xù)運行的。頁面執(zhí)行時間的一個典型例子就是Discuz論壇頁面最下方的時間顯式,通常 Discuz都是幾毫秒到幾十毫秒,和所用的平臺、數據量和當前系統壓力有關。

模板大家再熟悉不過,雖然有很多人只是在用,但是不知道為什么在用。模板在傳統上來說是劃分邏輯層的一種途徑,在MVC上結構里,它把表示層和下層分離,在實際使用中,它方便程序員和界面設計人員分工合作。然而,現在很多場合中,由于模板的不當使用,它非但沒有起到促進程序員和界面設計人員分工合作,反倒成為程序員和美工互相仇視的罪魁(我好像在以前的帖子里這樣說過),很多人在抱怨他們不得不花很多時間在整理模板上。

數據庫封裝似乎和Java的關系更大,它對多種數據庫系統提供一個統一調用接口,通常是一些封裝好的類,這些類有時也完成一些比如SQL檢查、過濾等工作。PHPLIB里的DB封裝、PEAR DB、Adodb等都很有名,用的人也很多。

Cache和Buffer看起來好像是一種東西,Cache叫做緩存而Buffer叫做緩沖。在硬件概念中,Cache的用途是連接兩種速度不同的設備,比如寄存器和內存、CPU和PCI-Bus、IDE總線和硬盤。Buffer的原意是類似彈簧的一種緩沖器,用來減輕或吸收沖擊的震動的東西。 Buffer是一種數據預存取的方式,它用于臨時存儲數據并以與接收速度不同的速度傳輸。Buffer的更新方式可以是按時間間隔自動刷新,而Cache 則更講究“命中率”,將當前時間段使用頻繁的少量數據放到高速設備中方便讀寫。在程序開發(fā)中,固然沒有什么高速、低速設備,不過數據源是可以有不同讀寫效率的。對于少量數據,文本文件的讀寫通常就要比數據庫存取效率好,而同樣是文本文件讀寫,在tmpfs上的效率就要比直接的磁盤IO效率好。Buffer 更多地體現在進程通信和隊列上,很多時候并不是因為接收方沒有能力更快地讀取,而是沒有必要更快地讀取。

守護進程是一種在后臺連續(xù)執(zhí)行的程序,它通常是起到監(jiān)視、控制流程、對外提供服務等作用。比如Apache本身就可以被理解成一個守護進程,雖然它實際上是由很多個經常更新的進程組成(主進程是固定的)。

Crontab是UNIX/Linux的定時程序,有點像Windows的“計劃任務”,它設定在多少個時間間隔后或者是某一個時間點執(zhí)行特定的程序。它通常用來完成自動更新、清除臨時數據等一段時間自動執(zhí)行一次的操作。

另外一個比較特別的概念(說它特別是相對于習慣了通用系統開發(fā)的人來說),是當我們擁有了一臺獨立的服務器之后,完全沒必要把自己局限在PHP所能提供的功能范圍內,當我們不知不覺地成為系統的主人后,要努力發(fā)現到這一點,我們有很多東西可以用的。PHP不是萬能的(這簡直是一定的),對于它的功能上的不足,完全可以用Perl來彌補,Perl做為一種通用語言,可以提供更多的功能選擇,砂礫一樣密的模塊給這個隨意得有些變態(tài)的語言提供了無窮的能量。對于PHP性能上的不足,完全可以用C來補充。PHP的根本就是由C繼承來,PHP本身也是由C開發(fā),用C來做PHP的擴展是完全合理的。

Linux本身就是由C和Perl在支撐(我這樣說完全不是為了夸大Perl的地位,大家可以去看看一個標準的Linux中有多少Perl腳本,離開Perl之后這個系統是不是覺得像個殘疾人)。PHP從C中繼承了大部分的語法,從Perl中學習了大部分Web特性、函數和那個貌似與開源很矛盾的 “$”符號(PHP早期就是一個Perl腳本)。

下面來分析我在使用的一些代碼(注:Linux獨立服務器適用。我好像已經放棄對Windows和虛擬主機做大型開發(fā)很長時間了)。里面使用了一些也許很熟悉也許很陌生也許很變態(tài)的方法。我的系統是RedHat AS3,沒有什么特別的,PHP版本是4.4.0,MySQL是4.1。我從來沒有刻意地去寫一些必須用到PHP5的新特性的代碼,除非真的必須用到。

我的Web根目錄在/www下,Apache、PHP都是默認安裝在/usr/local/下,MySQL是下載的編譯好的二進制版本,我也一樣把它丟在那里。因為只是用于測試,我不想它看起來很亂,至于在實際項目中,尤其是多臺服務器的情況下,需要好好地部署一下你的系統。

為了使系統的結構清晰一些,我把需要使用的文件都放在了二級目錄下面。

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

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

上面的代碼保證它只能被合法的程序所調用,而不會被其它的文件include。如果正在執(zhí)行的程序沒有定義一個'IN_BSG'常量,它在include這個common.inc.php之后程序會終止。

﹤?phplist($usec, $sec) = explode(' ', microtime());$page_time_start = $usec + $sec;?﹥

這兩行大家可能都會比較熟悉,這是計算程序的開始執(zhí)行時間的。在程序結束之前,還會再計算一下這個,為的是得出程序執(zhí)行所耗費的時間。如果你不在意這些,可以放心地把它注釋掉。

標簽: PHP
主站蜘蛛池模板: 压接机|高精度压接机|手动压接机|昆明可耐特科技有限公司[官网] 胶泥瓷砖胶,轻质粉刷石膏,嵌缝石膏厂家,腻子粉批发,永康家德兴,永康市家德兴建材厂 | 离子色谱自动进样器-青岛艾力析实验科技有限公司 | 尚为传动-专业高精密蜗轮蜗杆,双导程蜗轮蜗杆,蜗轮蜗杆减速机,蜗杆减速机生产厂家 | 时代北利离心机,实验室离心机,医用离心机,低速离心机DT5-2,美国SKC采样泵-上海京工实业有限公司 工业电炉,台车式电炉_厂家-淄博申华工业电炉有限公司 | 齿轮减速电机一体机_蜗轮蜗杆减速马达-德国BOSERL齿轮减速机带电机生产厂家 | 液压扳手-高品质液压扳手供应商 - 液压扳手, 液压扳手供应商, 德国进口液压拉马 | 河北码上网络科技|邯郸小程序开发|邯郸微信开发|邯郸网站建设 | 首页-恒温恒湿试验箱_恒温恒湿箱_高低温试验箱_高低温交变湿热试验箱_苏州正合 | 食药成分检测_调料配方还原_洗涤剂化学成分分析_饲料_百检信息科技有限公司 | 压片机_高速_单冲_双层_花篮式_多功能旋转压片机-上海天九压片机厂家 | GAST/BRIWATEC/CINCINNATI/KARL-KLEIN/ZIEHL-ABEGG风机|亚喜科技 | 建大仁科-温湿度变送器|温湿度传感器|温湿度记录仪_厂家_价格-山东仁科 | Eiafans.com_环评爱好者 环评网|环评论坛|环评报告公示网|竣工环保验收公示网|环保验收报告公示网|环保自主验收公示|环评公示网|环保公示网|注册环评工程师|环境影响评价|环评师|规划环评|环评报告|环评考试网|环评论坛 - Powered by Discuz! | 大数据营销公司_舆情监测软件_上海SEO公司-文军营销官网 | 青岛侦探调查_青岛侦探事务所_青岛调查事务所_青岛婚外情取证-青岛狄仁杰国际侦探公司 | 铝板冲孔网,不锈钢冲孔网,圆孔冲孔网板,鳄鱼嘴-鱼眼防滑板,盾构走道板-江拓数控冲孔网厂-河北江拓丝网有限公司 | 创客匠人-让IP变现不走弯路 | 包装设计公司,产品包装设计|包装制作,包装盒定制厂家-汇包装【官方网站】 | 匀胶机旋涂仪-声扫显微镜-工业水浸超声-安赛斯(北京)科技有限公司 | 成都竞价托管_抖音代运营_网站建设_成都SEM外包-成都智网创联网络科技有限公司 | 浇钢砖,流钢砖_厂家价低-淄博恒森耐火材料有限公司 | PO膜_灌浆膜及地膜供应厂家 - 青州市鲁谊塑料厂 | 等离子表面处理机-等离子表面活化机-真空等离子清洗机-深圳市东信高科自动化设备有限公司 | 臭氧发生器_臭氧消毒机 - 【同林品牌 实力厂家】 | 置顶式搅拌器-优莱博化学防爆冰箱-磁驱搅拌器-天津市布鲁克科技有限公司 | 天津力值检测-天津管道检测-天津天诚工程检测技术有限公司 | 锻造液压机,粉末冶金,拉伸,坩埚成型液压机定制生产厂家-山东威力重工官方网站 | 全国国际化学校_国际高中招生_一站式升学择校服务-国际学校网 | 周易算网-八字测算网 - 周易算网-宝宝起名取名测名字周易八字测算网 | 电力电子产业网 | 全国国际化学校_国际高中招生_一站式升学择校服务-国际学校网 | UV固化机_UVLED光固化机_UV干燥机生产厂家-上海冠顶公司专业生产UV固化机设备 | 硬质合金模具_硬质合金非标定制_硬面加工「生产厂家」-西迪技术股份有限公司 | 博莱特空压机|博莱特-阿特拉斯独资空压机品牌核心代理商 | 重庆监控_电子围栏设备安装公司_门禁停车场管理系统-劲浪科技公司 | 北京模型公司-工业模型-地产模型-施工模型-北京渝峰时代沙盘模型制作公司 | 扬子叉车厂家_升降平台_电动搬运车|堆高车-扬子仓储叉车官网 | 广东风淋室_广东风淋室厂家_广东风淋室价格_广州开源_传递窗_FFU-广州开源净化科技有限公司 | 引领中高档酒店加盟_含舍·美素酒店品牌官网 | 自清洗过滤器_全自动过滤器_全自动反冲洗过滤器_量子过滤器-滑漮滴 | 高通量组织研磨仪-多样品组织研磨仪-全自动组织研磨仪-研磨者科技(广州)有限公司 |