數(shù)據(jù)密集型架構(gòu)設計 為什么php不適合做計算密集型業(yè)務?
為什么php不適合做計算密集型業(yè)務?PHP即“超文本預處理器”,是一種通用開源代碼腳本語言。PHP是在服務器端想執(zhí)行的腳本語言,與C語言類似,是廣泛的網(wǎng)站編程語言。PHP獨特的地方的語法水的混合物了C
為什么php不適合做計算密集型業(yè)務?
PHP即“超文本預處理器”,是一種通用開源代碼腳本語言。PHP是在服務器端想執(zhí)行的腳本語言,與C語言類似,是廣泛的網(wǎng)站編程語言。PHP獨特的地方的語法水的混合物了C、Java、Perl包括PHP自創(chuàng)武功的語法。不利于學習,使用應用范圍,通常適用于Web開發(fā)領域。
1.優(yōu)點:開源能免費性快捷性[程序開發(fā)快,運行快,技術(shù)本身自學快]
1)跨平臺,性能卓越,跟Linux/Unix加強別跟Windows結(jié)合性能強45%,而且和很多付費的平臺生克制化的很省錢,.例如LAMP(Linux /Apache/Mysql/PHP)或則FAMP(FreeBSD/Apache/Mysql/PHP)結(jié)合,也可以數(shù)據(jù)應用夠大可以不決定換PostgreSQL或則Oracle,意見N種數(shù)據(jù)庫。(N10)
2)語法簡單點,如果不是有去學習C和Perl的很好上手,并且跟ASP有部分類似。有晚熟的開發(fā)工具,.例如NuPHPed,或則ZendStudio等等,再Linu臺下這個可以建議使用Eclipse等等。
3)目前主流技術(shù)都意見,例如WebService、Ajax、XML等等,起碼應用。
4)有比較發(fā)下的支持,比如說不使用ADODB也可以PEAR::DB做數(shù)據(jù)庫抽象概念層,用Smarty也可以samrttemplate做模板層,如果不是是PHP5.1的話,還也能使用PDO(PHP Data Object)來ftp訪問數(shù)據(jù)庫。
5)有很多能成熟的框架,比如支持什么MVC的框架:phpMVC,允許相似的事件驅(qū)動的框架:Prado,接受相似RubyOnRails的快速開發(fā)的框架:Cake等等,起碼滿足你的應用需求。
6)PHP5早就有晚熟的面向?qū)ο篌w系,都能夠適應適應基本是的面向?qū)ο笠?。適合的新規(guī)模很大項目。
7)有成熟的社區(qū)來意見PHP的開發(fā)。
8)目前早很多大型應用都是可以使用PHP,諸如淘寶網(wǎng)、Yahoo、163、Sina等等大型手機門戶,很多選用比較PHP來充當他們的開發(fā)語言,所以才大型手機門戶都能選用它,我想加上也能你的使用了。
9)有很多開源的框架或開源的系統(tǒng)也可以可以使用,.例如都很知名的開源框架有Zend Framework、CakePHP、CodeIgniter、symfony等,開源論壇有Discuz!、Phpwind等,開源博客WordPress,開源代碼網(wǎng)店系統(tǒng)如Ecshop、ShopEx等,開源的SNS系統(tǒng)如UCHome、ThinkSNS等。
10)使用成本低(linuxapachemysqlphp內(nèi)核)
2.缺點
1)函數(shù)以此命名不規(guī)范的要求駝峰法和下滑線,傳參位置不一你明白了的
2)單線程;PHP本身,一直以來php那就是個單進程的程序;只不過php的pthreads擴展巳經(jīng)有了。只不過它并不穩(wěn)定,運行運行著是會莫明奇妙的自己直接掛掉;php的擴展是C寫的,這就任何一個存儲出現(xiàn)線程競爭資源控制問題都能讓整個直接掛掉
3)核心異步網(wǎng)絡不允許(當然了在linux只有同步非會堵塞網(wǎng)絡模型)。卻少了這個令沒法開發(fā)一個能夠無法承受大并發(fā)的網(wǎng)絡應用。悠久的傳統(tǒng)的網(wǎng)絡模型和io都會堵塞的。這樣都差不多的編程的做法那是一個進程(或者線程)服務控制器一個用戶鏈接請求。因此無法能完成像實時自動網(wǎng)游這樣必須成千上百寬帶連接的任務。盡管php也有Libevent、eio擴充卡這一點可以算某種程度上面的彌補,不過覺得都并非那么系統(tǒng)完善
4)只支持web開發(fā),實在不方便做.exe文件,不方面做桌面應用程序.不方面做手機程序.
5)不合適做爬蟲、自動出現(xiàn)運行腳本.科算項目,這語言基本構(gòu)架就不適合我,可是有很多方法基于。
6)后續(xù)維護困難。后期提速空間局限性較大。
在對PHP有一個大體的認識以后,我們來了解一下我想知道為什么說PHP慢?
PHP的慢是相對而言C/C級別的語言來說,要知道,PHP語言最初的設計,就也不是為了解決的辦法可以計算密集型的應用場景。我們也可以這樣的話清點再理解為,PHP替提升開發(fā)效率,而犧牲了執(zhí)行效率。
我們很清楚PHP一個太大的特點,那是弱類型特性,也就是說,我這個可以隨意地定義,定義一個變量,然后把給它隨手變量為各種類型的數(shù)據(jù)。以一個int整型數(shù)字為例子,在C語言中:
intnum200;//大多是4字節(jié)
可是,如果沒有是PHP定義了一個同時的變量,不好算按的存儲結(jié)構(gòu)則是:
這個結(jié)構(gòu)體很快就會占據(jù)遠比C變量多得多的內(nèi)存,PHP中定義法追加:
$a200;//這變量將求實際占用資源綜合比C變量很多倍的存儲空間。
總之對PHP來說,不管是什么存儲什么類型的數(shù)據(jù),也是用上述“通殺”的結(jié)構(gòu)體利用。替兼容性PHP程序員的變量類型“亂入”,PHP能做到了對開發(fā)者的友好,可是對執(zhí)行引擎很殘忍。單個變量內(nèi)存消耗很可能還不明顯,一但應用PHP的數(shù)組等,則急切度指數(shù)猛升(數(shù)組的實現(xiàn)是HashTable)。后再,Zend引擎執(zhí)行時,將這些PHP代碼編譯為opcode(PHP的中間字節(jié)碼,格式有點類似匯編),由Zend引擎逐行解釋什么想執(zhí)行。
即便字符串的連接操作,應該數(shù)組的簡單修改等,完全是“PHP程序員一句話,Zend引擎跑斷腿”的節(jié)奏。而,同樣的的操作,差別C來說,PHP耗掉了更多的CPU和內(nèi)存等系統(tǒng)資源。除開,另外內(nèi)存手動回收、變量類型可以確定等等,都會減少系統(tǒng)資源的消耗。
的或,我用純PHP實現(xiàn)方法的快速排序函數(shù)和原生sort函數(shù),排序10000個整型數(shù)字,來做一個需要的時間對比,最后::
原生的sort前后歷時3.44ms,而我們自己實現(xiàn)的PHP函數(shù)sort則是68.79ms。我們發(fā)現(xiàn)自己,兩者負責執(zhí)行效率差距巨大無比。我的測試,是可以計算函數(shù)執(zhí)行前后的時間間隔,而不是整個PHP腳本從啟動到結(jié)束了的時間。PHP腳本起動和關閉過程,本身有著一系列的初始化和清理工作,也會占據(jù)地不少的耗時。
通常情況下,PHP不能執(zhí)行效率的排行是:
快的話的是PHP語言結(jié)構(gòu)(isset、echo等),PHP語言的一部分(它們根本不是函數(shù))。
然后把比較快的就是PHP的原生和拓展資源函數(shù)。PHP拓展,設計和實現(xiàn)ZendAPI之上,用C基于的功能,先執(zhí)行效率和C/Java是屬于什么同一個數(shù)量級的。
能夠慢的就是,我們通過PHP自己寫的代碼和函數(shù)。.例如,要是我們可以使用的比較重的純PHP實現(xiàn)的框架,只不過框架本身的模塊很多,因此,會確實帶累語言層面的執(zhí)行效率,同樣的占下更多的內(nèi)存。(國內(nèi)的Yaf框架,以去拓展的基于,但負責執(zhí)行效率遠快于純PHP寫的框架。
在一般情況下,我們當然不推薦一下用過PHP利用邏輯復雜計算類型的功能,尤其是Web系統(tǒng)流量比較比較大的場景下。所以,PHP程序員應該是對PHP的各種原生函數(shù)和各類拓展有一個比較廣泛的的了解,在具體的功能實現(xiàn)程序場景中,誠求更原生的解決方案(原生接口也可以去拓展),而不是自己寫一堆古怪的PHP代碼來實現(xiàn)程序這類型功能。
如果沒有有充足的PHP拓寬思維的新實力,將這類型業(yè)務功能重新寫過為一個PHP去拓展,也會轉(zhuǎn)弱進階代碼的執(zhí)行效率。這是一個非常不錯的,也被廣泛應用PHP優(yōu)化中。只不過,自己匯編語言的PHP業(yè)務拓展的缺點也很確實:
拓展資源變更土地性質(zhì)需要的時間比較好長,需求變更的時候改也古怪,寫得當然不好肯定會影響不大Web服務穩(wěn)定性。(例如,在Apache的worker模式下,多線程場景下死干凈,會影響同一個進程下的其他正常子線程。如果不是是多線程的Web模式,匯編語言去拓展還是需要支持線程安全)
去拓展在PHP更新版本的時候,可能必須做額外的兼容工作。
后的維護和全盤接手成本也都很高。
事實上,在互聯(lián)網(wǎng)一線企業(yè)中,更最常見的一種的解決方案,不是他提高PHP學習拓展,而用C/C獨立寫一個服務server,然后PHP實際socket和服務server通信來成功業(yè)務處理,并不將PHP本身和業(yè)務耦合在一起。
只不過,Web服務大部分的性能瓶頸都在網(wǎng)絡傳輸和其他服務server的工程浩大上(或者MySQL等),PHP負責執(zhí)行的需要的時間在整體需要的時間的占內(nèi)存比例的很小,因此從業(yè)務角度來說,影響可能當然不肯定。
國內(nèi)哪家大數(shù)據(jù)分析服務平臺比較好?
國內(nèi)哪家大數(shù)據(jù)分析服務平臺也很好?
派客動力科技是國內(nèi)著名的大數(shù)據(jù)管理和數(shù)據(jù)治理公司,反正大小企業(yè),也可以個性定制相同的數(shù)據(jù)管理解決方案
MobTech完全覆蓋120億移動端設備的全網(wǎng)受眾數(shù)據(jù)基因庫,全力協(xié)助企業(yè)實現(xiàn)程序各方數(shù)據(jù)整合,3層級垂直場景5000細化標簽助力業(yè)務分析;為企業(yè)可以提供用戶全生命周期的受眾洞察、建模分析和場景應用服務。
這里推薦幾個平臺:
1、星環(huán)Transwarp
基于條件hadoop生態(tài)系統(tǒng)的大數(shù)據(jù)平臺公司,國內(nèi)同樣能夠入選過Gartner魔力象限的大數(shù)據(jù)平臺公司,對hadoop不比較穩(wěn)定的部分參與了系統(tǒng)優(yōu)化,功能上接受了細化,為企業(yè)提供給hadoop大數(shù)據(jù)引擎及數(shù)據(jù)庫工具。
2、阿里數(shù)加
阿里云發(fā)布的站式大數(shù)據(jù)平臺,瞬間覆蓋了企業(yè)數(shù)倉,商業(yè)智能、機器學習、數(shù)據(jù)可視化等領域,可以不提供數(shù)據(jù)采集、數(shù)據(jù)深入融合、算出和挖掘服務,將可以計算的幾個是從可視化工具參與個性化的數(shù)據(jù)分析和展示出,圖形展示和客戶感知良好素質(zhì),但要阿里云才能使用,部分體驗功能就像,必須有一定會的知識基礎。maxcompute是數(shù)加底層的計算引擎,有兩個維度可以不看這個計算引擎的性能,一個是10小時一次性處理100PB的數(shù)據(jù),超過1億部高清電影,同時一個是單集群規(guī)模過萬臺,并支持多集群合作計算。
3、華為FusionInsight
基于條件Apache并且功能增強的企業(yè)級大數(shù)據(jù)存儲、查詢和分析的統(tǒng)一平臺。完全開放的的大數(shù)據(jù)平臺,可正常運行在開放的x86架構(gòu)服務器上,它以海量數(shù)據(jù)處理引擎和實時自動數(shù)據(jù)處理引擎為核心,根據(jù)金融、運營商等數(shù)據(jù)密集型行業(yè)的運行維護、應用開發(fā)等需求,打造了魔防、智慧、不可信的平臺軟件。
4、知于大數(shù)據(jù)分析平臺
知于平臺的定位與當今流行的平臺定位都不一樣,它根據(jù)的主要注意是中小型企業(yè),為中小型企業(yè)提供給大數(shù)據(jù)解決方案?,F(xiàn)階段,平臺主打的產(chǎn)品是輿情系統(tǒng)、文章傳播總結(jié)與網(wǎng)站排名監(jiān)測,每個服務的價格單次在50元左右,性價比極高。
本人其實剛介紹的這四個大數(shù)據(jù)分析平臺也很好,期望對你有幫助!