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

您的位置:首頁技術(shù)文章
文章詳情頁

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

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

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

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

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

首先,先要明確這篇文章的前提:必須有一臺(tái)或更多的可以被自己操縱的服務(wù)器,而不是虛擬主機(jī)空間。畢竟可以在虛擬主機(jī)上運(yùn)行的通用系統(tǒng)已經(jīng)有了很多經(jīng)典的作品和成熟的框架,效率挖掘已經(jīng)被前輩們做得非常出色了,它們的很多理念也被現(xiàn)在很多PHP用戶繼承和發(fā)展,越來越多的所謂“框架”也像滿天繁星一樣,我也不想再去寫那個(gè),因?yàn)榈谝晃易约旱乃揭膊辉趺礃樱瑢懖怀鍪裁葱迈r玩意來,寫出來也招人笑,第二是寫這個(gè)的文章太多了,說法也太多了,混亂是造成很多富有激情的未來天才程序員夭折的最大元兇。

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

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

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

執(zhí)行時(shí)間,誰都知道,就是一個(gè)程序從執(zhí)行開始到執(zhí)行結(jié)束所用的時(shí)間。因?yàn)閃eb是瞬時(shí)的、無狀態(tài)的,所以執(zhí)行時(shí)間是Web程序執(zhí)行效率的一個(gè)指標(biāo),它并不適合衡量C/S程序或者后臺(tái)守護(hù)的程序,因?yàn)樗鼈兒芏喽际浅掷m(xù)運(yùn)行的。頁面執(zhí)行時(shí)間的一個(gè)典型例子就是Discuz論壇頁面最下方的時(shí)間顯式,通常 Discuz都是幾毫秒到幾十毫秒,和所用的平臺(tái)、數(shù)據(jù)量和當(dāng)前系統(tǒng)壓力有關(guān)。

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

數(shù)據(jù)庫封裝似乎和Java的關(guān)系更大,它對(duì)多種數(shù)據(jù)庫系統(tǒng)提供一個(gè)統(tǒng)一調(diào)用接口,通常是一些封裝好的類,這些類有時(shí)也完成一些比如SQL檢查、過濾等工作。PHPLIB里的DB封裝、PEAR DB、Adodb等都很有名,用的人也很多。

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

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

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

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

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

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

我的Web根目錄在/www下,Apache、PHP都是默認(rèn)安裝在/usr/local/下,MySQL是下載的編譯好的二進(jìn)制版本,我也一樣把它丟在那里。因?yàn)橹皇怯糜跍y(cè)試,我不想它看起來很亂,至于在實(shí)際項(xiàng)目中,尤其是多臺(tái)服務(wù)器的情況下,需要好好地部署一下你的系統(tǒng)。

為了使系統(tǒng)的結(jié)構(gòu)清晰一些,我把需要使用的文件都放在了二級(jí)目錄下面。

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

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

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

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

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

標(biāo)簽: PHP
主站蜘蛛池模板: 连续密炼机_双转子连续密炼机_连续式密炼机-南京永睿机械制造有限公司 | 安平县鑫川金属丝网制品有限公司,声屏障,高速声屏障,百叶孔声屏障,大弧形声屏障,凹凸穿孔声屏障,铁路声屏障,顶部弧形声屏障,玻璃钢吸音板 | 广州二手电缆线回收,旧电缆回收,广州铜线回收-广东益福电缆线回收公司 | 塑料检查井_双扣聚氯乙烯增强管_双壁波纹管-河南中盈塑料制品有限公司 | China plate rolling machine manufacturer,cone rolling machine-Saint Fighter | 深圳高新投三江工业消防解决方案提供厂家_服务商_园区智慧消防_储能消防解决方案服务商_高新投三江 | 上海恒驭仪器有限公司-实验室平板硫化机-小型平板硫化机-全自动平板硫化机 | 电子元器件呆滞料_元器件临期库存清仓尾料_尾料优选现货采购处理交易商城 | 辊道窑炉,辊道窑炉厂家-山东艾希尔 | 煤棒机_增碳剂颗粒机_活性炭颗粒机_木炭粉成型机-巩义市老城振华机械厂 | 液压中心架,数控中心架,自定心中心架-烟台恒阳机电设计有限公司 行星搅拌机,双行星搅拌机,动力混合机,无锡米克斯行星搅拌机生产厂家 | 底部填充胶_电子封装胶_芯片封装胶_芯片底部填充胶厂家-东莞汉思新材料 | 代办建筑资质升级-建筑资质延期就找上海国信启航 | 卫生纸复卷机|抽纸机|卫生纸加工设备|做卫生纸机器|小型卫生纸加工需要什么设备|卫生纸机器设备多少钱一台|许昌恒源纸品机械有限公司 | 智能门锁电机_智能门锁离合器_智能门锁电机厂家-温州劲力智能科技有限公司 | 安徽千住锡膏_安徽阿尔法锡膏锡条_安徽唯特偶锡膏_卡夫特胶水-芜湖荣亮电子科技有限公司 | 铣刨料沥青破碎机-沥青再生料设备-RAP热再生混合料破碎筛分设备 -江苏锡宝重工 | 北京三友信电子科技有限公司-ETC高速自动栏杆机|ETC机柜|激光车辆轮廓测量仪|嵌入式车道控制器 | 芝麻黑-芝麻黑石材厂家-永峰石业 | 重庆监控_电子围栏设备安装公司_门禁停车场管理系统-劲浪科技公司 | WF2户外三防照明配电箱-BXD8050防爆防腐配电箱-浙江沃川防爆电气有限公司 | 济南货架定做_仓储货架生产厂_重型货架厂_仓库货架批发_济南启力仓储设备有限公司 | 东莞螺杆空压机_永磁变频空压机_节能空压机_空压机工厂批发_深圳螺杆空压机_广州螺杆空压机_东莞空压机_空压机批发_东莞空压机工厂批发_东莞市文颖设备科技有限公司 | 不锈钢酒柜|恒温酒柜|酒柜定制|酒窖定制-上海啸瑞实业有限公司 | 正压送风机-多叶送风口-板式排烟口-德州志诺通风设备 | 纯化水设备-EDI-制药-实验室-二级反渗透-高纯水|超纯水设备 | 选矿设备,选矿生产线,选矿工艺,选矿技术-昆明昆重矿山机械 | 细砂提取机,隔膜板框泥浆污泥压滤机,螺旋洗砂机设备,轮式洗砂机械,机制砂,圆锥颚式反击式破碎机,振动筛,滚筒筛,喂料机- 上海重睿环保设备有限公司 | 超声波流量计_流量标准装置生产厂家 _河南盛天精密测控 | 大流量卧式砂磨机_强力分散机_双行星双动力混合机_同心双轴搅拌机-莱州市龙跃化工机械有限公司 | 通用磨耗试验机-QUV耐候试验机|久宏实业百科 | 氨水-液氨-工业氨水-氨水生产厂家-辽宁顺程化工 | 镀锌角钢_槽钢_扁钢_圆钢_方矩管厂家_镀锌花纹板-海邦钢铁(天津)有限公司 | 茅茅虫AI论文写作助手-免费AIGC论文查重_写毕业论文降重 | 小型单室真空包装机,食品单室真空包装机-百科 | 诸城网站建设-网络推广-网站优化-阿里巴巴托管-诸城恒泰互联 | 电动打包机_气动打包机_钢带捆扎机_废纸打包机_手动捆扎机 | 网架支座@球铰支座@钢结构支座@成品支座厂家@万向滑动支座_桥兴工程橡胶有限公司 | 萃取箱-萃取槽-PVC萃取箱厂家-混合澄清槽- 杭州南方化工设备 | 九州网址_专注于提供网址大全分享推广中文网站导航服务 | 环比机械|