成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

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

PHP為什么會被認為是草根語言?

瀏覽:2日期:2022-09-13 17:54:55

以下文字并沒有非常多的技術詞匯,所以只要對PHP感興趣的人都可以看看。

PHP為什么會被認為是草根語言?

PHPer是草根嗎?

從PHP誕生之日起,PHP就開始在Web應用方面為廣大的程序員服務。同時,作為針對Web開發量身定制的腳本語言,PHP一直秉承簡單、開源的思想,這也使得PHP得以快速的發展,并且大力地推動Web2.0的出現與發展。但是,長期以來,PHPer(PHP Programmers)被認為是處于草根階層的程序員,被認為是技術含量少,層次低的程序員。這點在國內尤其突出。

記得一個技術主管說過這樣一個事情。他給一個程序員分配了PHP的開發任務,沒想到那個程序員居然說:“我是學Java出身的,你讓我去寫 PHP,你這不是在貶低我嗎?”。這件事情給我印象很深、觸動也很大。雖然這不能代表大部分程序員的看法,但是這么認為的人應該不少。還有人說,現在如果是大型的政府項目,PHP是肯定不會被列入考慮的范圍之內的。

那么為什么PHPer會被認為是草根階層,是因為它很簡單,人人都可以學會,所以沒什么難度嗎?我以前也是這么認為。PHP入門很快,處理文件,數據,遠程連接,網絡編程都非常方便,官方也有這樣的說法:PHP學習的成本很低,所以你容易去使用它。這個想法也是普遍的,甚至大部分的PHPer 自己都這樣認為。

說到這里,我想大家就會想到我為什么要寫這些文字。因為一年多的PHP推廣工作讓我了解到許許多多的使用PHP的公司的大概情況。在這些過程中我慢慢體會到其中的根本原因。這里我說是根本原因雖然是個人的看法,但是我覺得事實就是如此。

那么為什么PHPer會被看成草根階層,根本原因是PHPer所作的事情(通過代碼實現)的絕大部分都是表現層的東西,這個熟悉PHP的人都知道。當然也會有PHP會說他用MVC結構編寫的某某框架具備的如何如何的功能。但是這些還是表現層。所以只會處理表現層的程序員就被看成草根階層了。事實上也是如此,因為這種情況下PHP確實很難構造大型的應用。

這就找到原因了,不是的。為什么PHPer總是在負責表現層的東西呢。答案是底層的數據處理(Web應用就是數據存儲和查找)我們一般不去觸及。好,那么說到這里有些人可能已經想到了,那不就是數據庫嗎?對,就是數據庫。讓PHPer一直當草根的元兇就是數據庫。為什么?

PHPer對MySQL的依賴過大

因為目前流行的web架構中,前端是負載均衡系統,中間是web服務器,后面是數據庫服務器。所以,大部分PHPer工作在Web服務器層面。因為數據庫已經很好地為我們組織數據了。所以PHP中沒有太多的算法,而且大家潛意識下也覺得不需要,更何況會影響性能。

這種情況下,PHPer就成為了數據庫使用者,他總是在操作數據庫。而不是在做程序。一個最簡單的PHP腳本就是,連接數據庫,把數據取出來,然后用命令輸出到瀏覽器。整個過程不超過10行代碼。給人的感覺就是太簡單了。沒有任何技術含量。為什么了,因為數據處理部分都已經被數據庫做完了。尤其是MySQL的使用。MySQL是免費的,所以大多數程序員可以自由地使用它,另外MySQL的速度夠快了,所以做個PHP應用程序非常的簡單。這就相當于給你槍以后你覺得沒有必要學習武功一樣。當然,我不是說槍沒有武功好。而是說,槍的出現,小孩都可以輕松便捷地殺人了。

我們再詳細說說為什么是數據庫。這里我說一個例子。我去過北京一家非常著名的網站,當時我們還有一個比較資深的PHP程序員在那說些系統架構的事情。我記得當時那個程序員問大家一個數據結構中的算法問題的時候,全場沒有一個人能答得出來(包括我)。然后那個程序員就開始給大家講些很基礎的數據結構的東西了。讓我一下子回想到大學時候學的數據結構課。而這些基礎的數據排序、查找、傳遞的問題在其他高級語言(比如C)是非常普遍的。但是在PHP沒有。PHPchina.com的論壇也有個板塊叫PHP的數據結構和算法。這個板塊的帖子也是寥寥無幾。

說到這里,大家明白了吧?大部分PHPer僅僅處理表現層的東西,而在MySQL的便捷使用下,PHPer幾乎不用觸及任何數據結構與算法的情況下完成大部分開發任務,所以一個才有上面的,沒有一個PHP程序員能夠回答出那道數據結構的問題,換成是C等語言,情況可能就大不相同了。是PHPer草根,才讓PHP顯得草根。

仔細回想下,目前網絡上大家討論的最多的是兩個方面的問題。一個是PHP的類的使用(處理過程的封裝),還有一個是開發框架問題。但是我們仔細分析的話,發現這些所謂的PHP中比較復雜的概念里面沒有數據處理。為什么,有數據庫。用一個Adodb或者PHP5的PDO就可以搞定了。真的搞定了嗎?不是,這些無非是在連接數據庫,沒有數據處理。所以PHPer似乎就沒有什么可以拿出臺面上的東西。

再說一個具體的代碼問題,無級分類。這個概念我想大家都不會陌生了吧。我見過兩種處理方式。第一個是地道的PHPer的處理方式,也是目前比較流行的。就是用數據庫來處理。而且字段很少,只需要加個父類的字段并加以判斷就行了。而且這個方法很實用。效率也高。但是這個不是數據處理的范疇了,而是數據庫的查找。

第二個是C程序員用PHP寫出來的,他把所有的分類信息都從數據庫取出來,然后用數據結構算法進行排列分布,然后輸出。

這里我們不對這兩種方式的效率進行對比,我想大家都有各自的想法。但是我想說明一個問題,就是這兩種做法的本質的區別。PHPer習慣性地用數據庫來處理,而且有很巧的處理方式,效率也很高。這種方式就是數據庫查詢。而第二種方法是比較有特點的。他認為數據庫就是存放數據的地方,具體的邏輯處理還要靠自己的邏輯。

因此,結論是第二種方法的使用者覺得自己強些,因為數據的邏輯是他組織的。并且覺得PHPer的那種做法無非就是會查詢數據庫罷了。所以他認為PHPer是草根級的,只懂得操作數據庫和排列頁面(smarty搞搞那種)。

讓數據庫回歸本職工作

說到這里,我想大家都已經回憶了不少自己平時用PHP做開發的經歷了吧,是否發現大家確實都在操作數據庫呢。

那么我們來討論下這個問題。數據庫不好嗎?為什么我一直用數據庫處理數據都沒有問題。我要說的是數據庫是有問題的,而且有很大的問題。當然這里我并不是說不能用數據庫,也不是在貶低數據庫的性能。而是,我們沒有充分認識到數據庫所起到的作用。

我的想法源起于這樣一個事情,有一次一個網站的技術總監問我,為什么他們的網站那么慢,要怎么辦。當時,我的MSN里Zend總部的工程師正好在線,我就問他PHP響應比較慢了,怎么辦?他當時直接告訴我,是數據庫問題。肯定是數據庫沒有優化設計好。所以,我沒有給那個技術總監確切的答案了,因為他們的數據庫設計我們是不能涉及的。所以就給了大概的數據庫優化的建議。這樣的事情屢次發生,我就開始懷疑,為什么Zend總部的工程師每次都跟我說是數據庫的問題呢,難道我們不能從PHP層面來解決這個問題嗎?答案是不能。因為PHP目前的運行速度已經是很快了,通過Zend的性能分析也能看到一個用戶的點擊,PHP的運行時間只有10%不到,那PHP在干嗎?它在等。等數據庫的查詢結果。這個方面在目前的PHP產品中有了很大的提高,那就是 Caching和網頁靜態化兩個方案。

Caching可能大家會比較陌生,但是網頁靜態化現在連PHP產品的用戶都非常清楚了。速度快、容易被搜索到等等,好處不言而喻。開玩笑地說,現在網站的主頁實現網頁靜態化只需要硬盤足夠大。J至于Caching就比較復雜些,也是大多數PHPer感到頭疼的地方。甚至于有些人會用C來實現。因為Caching中的數據有效期驗證、查找、提取、更新等等都是比較難處理。當然,也有人會用數據庫來處理 Caching問題。

所以,當訪問量激增的時候,PHP架構的網站會出現的很多問題都因數據庫而起。數據庫的同步問題還不算什么。關鍵是數據庫的響應速度會有指數級的降低。這個問題我在10月23號LAMP發布會的時候問過MySQL的副總裁。他當時也沒有給我比較完美的答案(這也我的意料之中),因為數據庫總會有瓶頸的,除非是神仙數據庫,哈哈!

這里有個題外話,LAMP大會的時候我跟Yahoo的一個技術高管聊的時候,我問他Yahoo在選擇MySQL還是Oracle的時候是怎么考慮,他的答案令我非常驚訝。他說大部分的時候我們是會用MySQL的,因為它的性能已經達到我們的要求。但是什么時候我們會選用Oracle呢,就是當我們需要存儲收費用戶的數據的時候。我就問為什么,難道Oracle比MySQL穩定嗎?他說,這個倒沒有特別考慮。關鍵是如果使用Oracle的話,當出現問題的時候我們可以找到負責人,Oracle會負責事故的處理,但是如果用MySQL的話,我們找誰去?

所以,我們對數據庫的看法應該糾正過來,就是說數據庫不是萬能的。如果有實力的話自己開發數據庫。聽說Google就是那樣的。

那么我們怎么看待數據庫呢?我個人的理解是數據庫只是用來降低開發成本的手段。因為采用數據庫以后我們不需要考慮數據的存儲,尤其是排序和查找。但是這會帶來什么問題呢?就是當業務膨脹的時候,數據庫就成為瓶頸了。這個時候問題就會非常棘手。因為這個是底層的數據處理。牽一發而動全身。

所以我認為正確的觀點是,數據庫是一個數據備份機。怎么理解,我們只需要保證數據的存儲有效性就行了。而這本來就是數據庫的核心功能,只不過因為數據庫的方便的排序等功能讓大家把過多的處理都交給數據庫來操作了。一個用戶的點擊PHP就把一大堆的任務交給數據庫,然后把結果排列下給用戶就完事了。這對數據庫是不公平的。也是因此大家開始抱怨數據庫的性能了。

針對這個觀點,我們再舉個例子,有一次我去拜訪一個大型的網絡公司(基本上國內只要上過互聯網的都知道),他們使用PHP很少,但是我了解到他們其它業務是怎么使用數據庫。他們自豪地跟我介紹說他們在數據庫的外圍有個第二數據庫(我這里起名叫第二數據庫)。為什么叫第二數據庫呢,原來它是一個緩存系統。那么開發工程師怎么去這個緩存系統獲取數據呢?那個技術總監自豪地說,他們這個緩存系統有SQL查詢語句。我當時很驚訝,但是后來想想確實需要這個。因為當你的緩存系統達到一定量級的時候從緩存獲取數據都非常復雜,干脆寫個SQL查詢語句讓緩存系統分析、處理并返回數據。而且他們告訴我,在他們那里,就算是用PHP的話也是讓PHP去那個緩存系統讀取數據。

所以說,如果你能處理好這樣的問題的話,把數據存放在數據庫,然后數據庫只起到備份的作用。然后你用自己的中間層來處理分析數據,效果是90% 以上的用戶不訪問數據庫。有人就會說了,這不就類似連接池的東西嗎?是的,因為數據庫的瓶頸是無法解決的,我們只能在Web服務器和數據庫中間加個中間層來做緩沖。

可能大家會說了,切,這個我們早就知道了。那好,這里我要說的是它引發的兩點思考:

第一,有些語言已經有連接池技術的基礎上,那些程序員可以方便地使用連接池而構建大型應用。那么如果他們認為 PHPer只會是用數據庫,那么我們是不是可以說他們只會是用連接池呢?連接池和數據庫在這個概念上有何區別?

第二,當PHPer開始構建自己的緩存系統的時候,他是不是突破了PHPer只會是用數據庫的層次?因為他參與了數據邏輯的處理工作。那么他還是草根嗎?

最后,懂得獨立思考的PHPer不是草根,什么事情都丟給數據庫去做的才是。

標簽: PHP
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
亚洲欧美另类小说| 久久成人免费| 国产精品亚洲综合| 国产欧美va欧美不卡在线| 激情综合色播激情啊| 99精品国产一区二区青青牛奶 | 午夜久久久久| 日韩一区二区免费在线观看| 青娱乐精品在线视频| 最新日韩在线| 中文字幕不卡在线| 91美女片黄在线观看91美女| 精品国产一区二区三区久久久蜜月 | 免费高清成人在线| 久久精品女人的天堂av| 亚洲一区二区精品久久av| 日韩亚洲精品在线| 日韩久久一区二区| 亚洲性感美女99在线| 亚洲欧洲精品一区二区三区不卡| 91在线国内视频| 国产日韩欧美一区二区三区乱码| 色综合色狠狠天天综合色| 久久久久一区二区三区四区| 91免费视频网址| 国产亚洲欧美一级| 欧美xx69| 一区二区中文视频| 亚洲国产午夜| 亚洲美腿欧美偷拍| 国产欧美激情| 日韩影院免费视频| 在线观看亚洲精品| 久久国产精品露脸对白| 在线一区视频| 亚洲电影第三页| 免费在线观看成人av| 日本女人一区二区三区| 欧美视频精品在线观看| 国模少妇一区二区三区| 日韩欧美国产高清| 色综合天天综合| 成人免费在线视频观看| 亚洲视频大全| 老司机精品视频导航| 欧美精品久久99久久在免费线 | 国产精品66部| 精品剧情v国产在线观看在线| 成人深夜视频在线观看| 国产日韩欧美精品一区| 亚洲激情一区二区| 偷拍一区二区三区| 欧美日韩国产精品成人| 成人午夜激情视频| 一区精品在线播放| 久久视频一区| 激情另类小说区图片区视频区| 欧美一区二区在线播放| 欧美在线3区| 亚洲丝袜自拍清纯另类| 亚洲一区二区三区高清| 男女男精品视频网| 日韩精品中文字幕一区| 欧美va天堂在线| 亚洲综合免费观看高清完整版 | 欧美大片免费久久精品三p| 午夜精品婷婷| 亚洲不卡av一区二区三区| 欧美日韩一区中文字幕| 色综合久久综合中文综合网| 一区二区成人在线视频| 欧美日韩国产首页| 欧美一区二区三区另类| 国产精品成人一区二区三区夜夜夜| 国产欧美日韩视频一区二区三区| 蜜臀av国产精品久久久久| 日韩一级片网站| www.欧美.com| 亚洲综合色自拍一区| 日韩一区二区三区高清免费看看| 国模一区二区三区| 美女脱光内衣内裤视频久久网站| 久久综合国产精品| 先锋a资源在线看亚洲| 成人一区二区三区在线观看| 成人欧美一区二区三区白人| 欧美特级限制片免费在线观看| 99re8在线精品视频免费播放| 亚洲人成在线播放网站岛国| 欧美色图第一页| 狠狠色综合网站久久久久久久| 日韩电影免费一区| 精品国产三级电影在线观看| 国产精品一区在线观看| 国产suv一区二区三区88区| 亚洲欧美影音先锋| 在线播放中文字幕一区| 亚洲欧洲日本一区二区三区| 黑人巨大精品欧美一区| 亚洲视频在线观看三级| 欧美精选午夜久久久乱码6080| 亚洲高清视频一区| 国产成人无遮挡在线视频| 一区二区三区欧美| 欧美一区二区三区性视频| 在线午夜精品| 99久久精品免费看国产 | 国产欧美一区二区精品忘忧草 | 91精品久久久久久蜜臀| 日韩亚洲不卡在线| av日韩在线网站| 午夜伊人狠狠久久| 久久夜色精品国产噜噜av| 一本大道久久a久久精品综合| 91麻豆国产福利精品| 激情综合色丁香一区二区| 专区另类欧美日韩| 日韩手机在线导航| 久久精品官网| 欧美精品三区| 国产成人免费视频网站| 国产精品盗摄一区二区三区| 日韩一二三四区| 一本久久a久久免费精品不卡| 亚洲性感美女99在线| 成人av电影在线观看| 免费成人在线网站| 国产精品护士白丝一区av| 日韩一区二区精品在线观看| 欧美在线综合| 狠狠久久婷婷| 不卡的av网站| 国产一区二区中文字幕| 午夜影院在线观看欧美| 亚洲丝袜自拍清纯另类| 久久影院午夜论| 欧美精品日韩一本| 欧美亚洲综合网| 黄色欧美成人| av高清不卡在线| 精品一区二区三区在线播放| 亚洲一区在线观看免费 | 日韩美女一区二区三区| 色诱视频网站一区| 日韩一级在线| 欧美成人蜜桃| 成人少妇影院yyyy| 久久精品国产成人一区二区三区| 一区二区在线观看免费| 国产精品久久久久久一区二区三区 | 国产中文字幕一区| 日本不卡中文字幕| 亚洲一区二区在线视频| 国产精品久久久久三级| 欧美国产视频在线| 欧美精品一区二区三| 91精品视频网| 欧美精品久久一区| 欧美日韩高清一区二区| 色婷婷国产精品| 麻豆精品网站| 99视频一区| 99av国产精品欲麻豆| 国产精品分类| 欧美午夜精品理论片a级大开眼界 欧美午夜精品久久久久免费视 | 麻豆国产一区二区| 日韩av电影一区| 日韩激情在线观看| 午夜精品123| 亚洲成在线观看| 亚洲综合激情网| 一区二区视频在线看| 综合中文字幕亚洲| 亚洲日本电影在线| 亚洲欧美日本在线| 亚洲欧美偷拍三级| 亚洲天堂精品视频| 亚洲少妇最新在线视频| 亚洲欧美日韩国产成人精品影院 | 日本美女一区二区| 日韩精品电影一区亚洲| 亚洲成人av免费| 午夜国产不卡在线观看视频| 亚洲不卡在线观看| 婷婷一区二区三区| 蜜臀va亚洲va欧美va天堂 | 欧美精三区欧美精三区| 在线成人小视频| 欧美精品xxxxbbbb| 日韩午夜激情免费电影| 精品久久久久久久久久久久久久久久久| 欧美变态口味重另类| 精品国产乱码久久久久久牛牛 | 日韩在线一区二区三区| 丝袜诱惑制服诱惑色一区在线观看| 日精品一区二区三区| 久久不见久久见中文字幕免费| 激情综合一区二区三区| 国产成人免费视频网站| 91丨九色porny丨蝌蚪|