導航:首頁 > 編程語言 > php編程規范facebook

php編程規范facebook

發布時間:2023-02-03 08:24:56

『壹』 php語言需要避免的誤區

PHP語言需要避免的誤區

PHP是一種非常流行的開源伺服器端腳本語言,你在萬維網看到的大多數網站都是使用php開發的。但是,你大概很奇怪的注意到有少部分的人發誓要離php 遠遠的。但是令人更奇怪的是或者很震驚的說他們不用php是因為一些被證實的語言缺點。他們決定不用php,是因為誤解。那麼誤解是什麼呢?和我一起來看看吧!

1. PHP是一種面向對象語言,但面向對象並不徹底

這完全不對。所有認為php不是徹底面向對象的程序員,尤其是java程序員,都需要上一個PHP的基礎培訓;他們會發現PHP中大量面向對象的特性。例如:介面、方法、抽象類等等。我同意早期的PHP版本確實不支持太多面向對象的特性,但PHP5已經有強大的面向對象支持。而且,你一定想不到編碼在 PHP中會變得如此簡單,那是因為PHP和面向對象結合的原因。

所以,消除這個誤解吧。

2.PHP無法實現特定功能

我很清楚這種表述很含糊,但是我不能想出任何更好的說法。這是一個很含糊的誤解,開發人員認為PHP不能幫助他們實現一些諸如內存訪問的功能或者一些 PHP主要發行版沒有提供支持的功能。但事實是PHP是一種可擴展的語言,所以你需要做的'是用C或者C++編碼,然後創建對應的擴展。

其實,你根本不需要自己動手去創建擴展,因為這里已經有數以百計的可用擴展。你唯一需要做的就是去尋找它們。

3.PHP 是不安全的

開發者對PHP的另外一個誤解就是PHP網站和應用是不安全的。但是,為什麼你會希望它在默認情況下是安全,為什麼不編寫安全的代碼? 我知道這里一直存在很多不安全的PHP代碼,因為最初的學習曲線是簡單的而且很容易上手。所以,作為一個開發者,你需要使它盡可能的安全。

.Net可以幫助你在默認情況下是安全的,相比之下PHP確實缺少很多。但是如果你是一個訓練有素的程序員,那麼你其實不要默認情況的安全幫助。Include通常是安全的,但是你需要要小心。如果它們的路徑是動態生成的,對指令的透徹理解可以幫助你讓代碼更安全。

4. 它不能適應大型應用

大型復雜應用需要建立在自身可靠和高性能的語言之上,這是PHP在一定程度上所沒有的。但是,如果你設計和開發的應用程序架構穩定,為什麼你會對它的性能和可擴展性有疑問呢?

事實上一些頂尖網站,如Facebook、維基網路和雅虎等等,都是基於PHP構建的,就像我們所想的那樣,這些巨型網站都工作的很好。

5. PHP只能用於網站開發

這也是一個誤解,盡管看起來它有點合乎邏輯,因為PHP是網站開發中最常見的語言。但也有一些被稱為命令行界面的東西,這可以確保你的PHP應用程序可以在Web伺服器之外運行。

你可能不相信,但即使是那些很大程度上取決於CPU能力的應用程序,也可以用PHP開發的,使用PHP CLI來運行。

更重要的是,如果你想使用PHP開發桌面應用程序,不用擔心,使用Windows特定擴展你可以做到這一點。

6.開發過程慢

這是一直廣為流傳的誤解。我不知道起源於何處?這個流言可能來自於曾經一個時期php代碼很亂並且代碼中四處充斥著Mysql語句(他們以此為反例,但是實際上我們都不這樣用)。問題是為什麼這樣開發過程就慢了?當大量的php框架出現時,可以大大的加速開發的過程。毋庸置疑,你可以在短時間內開發出很大的程序,不論它有多麼的復雜。所以,你用php開發一點都不慢,特別是當你使用php框架的時候。

7.專業開發人員不使用PHP

PHP是針對初學者的,它是為那些不是認認真真做開發的人設計的。這些說法都和PHP的使用有關。這只是一種誤解,認同它沒有任何意義。這里有如此多的網路應用,包括一些大型的,都是使用PHP構建的。可以想像這些說法是多麼不正確。

8. 性能問題

這是一個棘手問題。這不是一個誤解。和硬幣有兩個面一樣,這個問題也是兩方面的。事實上到處充斥著垃圾代碼,隱式轉換、不適用的模塊、缺少操作符重載等等都能影響一個php應用的性能。但是這個依賴於你是不是有足夠的能力去用好這個語言,用它編寫穩定地、快速地應用。

性能是由你設計的架構和你寫的代碼來決定的!

9. 便宜沒好貨

這條貌似在邏輯上很站得住腳,但是用到php上那就是完全是誤解了!事實上,php的最大優勢就是他的免費和開源,這意味著大多數提供應用開發服務的開發 者必須都精通它。雖然免費開源會帶來一定問題,但是這也為了使用他們服務的客戶提供成本優勢。與商業開發語言相比較,php的開發成本比價低,但是這並非 意味著它的質量值得懷疑。和正確的開發者一起工作,可以獲得更高性能的php應用。

10. PHP言過其實

真是這樣么?你隨口瞎說的吧。我不認為這樣,還有很多的開發者也都不這樣認為。

這不是所有php謊言的終結者。隨著php語言不斷的發展,變得越來與強大,誤解也會跟著增長的。但請不要被他們忽悠了。多讀,多問,自己動動手,然後你就知道,是不是真的了。

;

『貳』 PHP的優缺點是什麼

HP應該算是現在大中小非專業網站企業會優先使用的網站建設編程語言,相對於ASP和JSP來說,PHP在在很多方面更適合個人以及小型企業做開發,這主要是因為PHP本身獨特的優勢導致的,那麼下面小編就來為大家盤點PHP得到眾多企業支持的原因。
PHP的優勢包括:

1、開放源代碼

由於PHP開放源代碼,因此基本上可以在網路上找到適合自己的源代碼。

2、免費性

和其它技術相比,PHP本身免費,並且也是開源代碼。

3、快捷性

PHP程序開發快,運行快,技術本身學習快。由於PHP可以被嵌入於HTML語言,新詞相對於其他語言來說編輯簡單,實用性強,更適合初學者。

4、跨平台性強

由於PHP是運行在伺服器端的腳本,因此可以在多種平台上得到應用,包括了UNIX、LINUX、WINDOWS、Mac OS等系統。

5、效率高

PHP由於消耗相當少的系統資源,因此工作效率更高。

6、圖像處理

一般來說,PHP動態創建圖像,而且目前PHP圖像處理默認使用GD2。因此也可以配置為使用image magick進行圖像處理。

7、面向對象

在PHP4,PHP5 中,面向對象方面都做出了很大的改進,因此PHP完全可以用來開發大型商業程序。

8、專業專注

PHP同為類C語言,而且更重要的就是PHP以支持腳本語言為主。

上面介紹的八點內容就是關於PHP被廣大企業使用的優勢,其實PHP相對於其它幾種語言來說,更適合初學者學習和使用,因此想要入門的朋友可以多找一些材料來學習。

『叄』 如何學習PHP程序開發呢

PHP作為全球最流行的編程語言之一,普遍用於重點項目中。Facebook以PHP來建立和維護內部系統。昆明電腦培訓http://www.kmbdqn.cn/建議PHP已為大部分網站提供支持。為什麼要選擇PHP框架?如何學習PHP程序開發呢?

使用PHP框架開發的優點:


1。PHP框架令開發更迅速。不用繁瑣的操作檢索數據,PHP提供了Create、Retrieve、Update和Delete的操作。


2。框架可以更輕松地擴充系統。


3。代碼維護比一般PHP應用更方便。應用程序代碼將更簡單。


4。MVC模式能確保迅速發展。


5。框架更好地保護Web應用程序不受多見的安全脅迫。


6。DRY——Don』tRepeatYourself原則讓極少的代碼發揮極大的作用。


即使運用原生的PHP可以寫出任意應用,如今開發大多需要運用工具和時間管理技能,以滿足市場需求。以下是最熱門的三款PHP框架。


Symfony


Symfony即能反復使用的PHP程序開發組件,能開發可擴展的高性能應用。提供30個組件,可以在RAD環境下隨心所欲開展工作。Laravel是建立自Symfony。


Laravel


「PHPframeworkforWebArtisans」——Laravel是最盛行的PHP框架,提供出色的社區交流平台。


『肆』 一個優秀PHP程序員標准

MySQL能力

在開發上的應用基於幾個能力體現:
(1)了解:知道用PHP連接資料庫;懂得寫一些簡單的SQL;建一些簡單的索引;懂得用工具簡單操作一下資料庫(增刪改庫表結構數據等等)。
(2)熟悉:懂得在開發應用上設計資料庫,建立一些有效的索引,用explain分析SQL性能,壓力測試等等。
(3)很熟悉:深入了解資料庫索引、存儲引擎原理以及運行機制,能有效地構建高性能可擴展的資料庫結構/架構,有效地優化資料庫性能配置並加以調試,分析資料庫運行狀態。
(4)精通:簡單地說具備以上所有能力的同時,有多年高負載分布式環境下的優化管理經驗。
據觀察以及交往經驗,70%的PHPer處在了解階段,25%處於熟悉階段,>4%很熟悉,精通的人基本就不是PHPer了。
◆70%這個群體最容易忽視MySQL,以為MySQL只是簡單的存儲媒介,沒有優化意識,認為加個內存、CPU就能解決問題。
典型事件:join、order by、group by等語句性能一塌糊塗,資料庫根本沒有設計(僅限於拆成一個主表,N個附表等),搞不清欄位類型及作用,碰到大表的復雜查詢就沒轍。
◆20%這個群體的人只是MySQL運行機制理解不透徹,對影響MySQL性能的關健因素把握不明確,不熟練。
典型事件:熟讀手冊,但說不清索引原理,不知道二叉樹、HASH等演算法對於資料庫的作用
◆4%的群體已經基本可以勝任DBA的職能。
OOP能力
(1)了解:了解變數的作用域、類型,及其意義,了解繼承機制等,懂得復用、封裝概念。
(2)熟悉:熟練應用介面、抽象等技術混合開發程序,並理解其中含義,一般研究過Java。
(3)很熟悉:有過OOP架構設計經驗,熟悉設計模式、UML,熟悉PHP對象運行機制,內容管理等。
(4)精通:應該是架構師級別了,不限於PHP。
經常我們會碰到一些自稱熟悉OOP卻連public、private、protected、static都解釋不清的人,是肯定沒有經歷過正規的OOP項目。
大型網站經驗
(1)了解:熟悉PHP開發下的緩存應用(Memcache、APC等);接觸過LVS、SQUID應用;有一定的Session處理方案;熟悉負載均衡;熟悉PHP數據連接池應用;了解PHP編程性能優化。
(2)熟悉:掌握分布式緩存及緩存性能優化、熟悉存儲系統、文件系統、資料庫,開發可擴展平台。能結合負載均衡合理布置流量,對PHP運行性能進行監控與分析。
(3)非常熟悉:具備系統分析師能力,已經超出PHPer環節;
(4)精通。

『伍』 php 是什麼是什麼

PHP,是英文超文本預處理語言Hypertext Preprocessor的縮寫。
一、概念。
PHP 是一種 HTML 內嵌式的語言,是一種在伺服器端執行的嵌入HTML文檔的腳本語言,語言的風格有類似於C語言,被廣泛地運用。
二、解析。
PHP 獨特的語法混合了C、Java、Perl以及PHP自創的語法。它可以比CGI或者Perl更快速地執行動態網頁。用PHP做出的動態頁面與其他的編程語言相比,PHP是將程序嵌入到HTML文檔中去執行,執行效率比完全生成HTML標記的CGI要高許多;PHP還可以執行編譯後代碼,編譯可以達到加密和優化代碼運行,使代碼運行更快。
三、特點。
1、PHP 獨特的語法混合了 C、Java、Perl 以及 PHP 自創新的語法。
2、PHP安裝它可以比 CGI或者Perl更快速的執行動態網頁。用PHP做出的動態頁面與其他的編程語言相比。
3、PHP是將程序嵌入到HTML文檔中去執行,執行效率比完全生成htmL標記的CGI要高許多; PHP具有非常強大的功能,所有的CGI的功能PHP都能實現。
4、支持幾乎所有流行的資料庫以及操作系統。最重要的是PHP可以用C、C++進行程序的擴展。

『陸』 php直播源代碼做開發有什麼優勢

PHP(Hypertext Preprocessor),超文本預處理器,是一種通用性開源腳本語言。它的語法吸取了C語言、Java和Perl的優點,免費、快捷、高效,主要適用於Web開發領域。
目前,全球5000萬互聯網網站60%以上都在使用PHP技術,AlexaTOP500中國網站排名中有394家使用PHP,國內80%以上動態網站使用PHP進行開發,在Web後端語言中PHP全球市場語言佔有率達到80%。

像Facebook、Google、新浪、網路、YouTube、騰訊都在使用PHP。

PHP語言的八大優勢:

1、開放源代碼,所有的PHP源代碼事實上都可以得到。

2、免費性,php和其它技術相比,PHP本身免費且是開源代碼。

3、快捷性,程序開發快,運行快,技術本身學習快。嵌入於HTML:因為PHP可以被嵌入於HTML語言,它相對於其他語言。編輯簡單,實用性強,更適合初學者。

4、跨平台性強,由於PHP是運行在伺服器端的腳本,可以運行在UNIX、LINUX、WINDOWS、Mac OS下。

5、專業專注,PHP支持腳本語言為主,同為類C語言。

6、效率高PHP消耗相當少的系統資源。

7、面向對象,在php4,php5 中,面向對象方面都有了很大的改進,php完全可以用來開發大型商業程序。

8、圖像處理,用PHP動態創建圖像,PHP圖像處理默認使用GD2。且也可以配置為使用image magick進行圖像處理。

PHP的3種常用運行方式:CGI、FastCGI、APACHE2HANDLER。

1、CGI

CGI即通用網關介面(common gatewag interface),它是一段程序,通俗的講CGI就像是一座橋,把網頁和WEB伺服器中的執行程序連接起來,它把HTML接收的指令傳遞給伺服器的執行程序,再把伺服器執行程序的結果返還給HTML頁。CGI 的跨平台性能極佳,幾乎可以在任何操作系統上實現。

2、FastCGI

fast-cgi 是cgi的升級版本,FastCGI像是一個常駐(long-live)型的CGI,它可以一直執行著,只要激活後,不會每次都要花費時間去fork一 次。PHP使用PHP-FPM(FastCGI Process Manager),全稱PHP FastCGI進程管理器進行管理。

但每一個Web 請求PHP都必須重新解析php.ini、重新載入全部擴展並重初始化全部數據結構。使用FastCGI,所有這些都只在進程啟動時發生一次。一個額外的好處是,持續資料庫連接(Persistent database connection)可以工作。

3、APACHE2HANDLER

PHP作為Apache模塊,Apache伺服器在系統啟動後,預先生成多個進程副本駐留在內存中,一旦有請求出現,就立即使用這些空餘的子進程進行處理,這樣就不存在生成子進程造成的延遲了。這些伺服器副本在處理完一次HTTP請求之後並不立即退出,而是停留在計算機中等待下次請求。對於客戶瀏覽器的請求反應更快,性能較高。

如何保護自己的PHP代碼:

1、代碼混淆+加密

就是把代碼base64加密,然後對base64里的字元串進行字元串映射(隨機生成字典混淆)然後eval執行 這種百分之百能被破解還原。

2、混淆亂碼字元

代碼混淆變數還有一些東西 和1原理差不多,不過是把字元串換到 ascii 127到255之間非人類還有編輯器看不懂的字元 ,結果也是百分之百能被破解和還原,只是時間問題。

3、發放opcode

不分發代碼,而是先把PHP代碼預編譯,分發opcode,PHP7以後opcache深度集成這個東西 PHP7以後可以用這個方法保護源碼,但是也會被opcode反編譯回去 也會被破解。

4、混淆+加密+寫PHP擴展

混淆+加密+寫PHP擴展,但是只要是開源的PHP擴展都會被破解,除非自己寫加密演算法,把PHP代碼加密, 然後自己拿C語音寫擴展閉源, 別人不知道你加密思路和破解思路,被破解的可能性很小。

『柒』 一些著名的軟體都用什麼語言編寫

一、操作系統:

Microsoft Windows : 匯編 -> C -> C++

備註:曾經在智能手機的操作系統(Windows Mobile)考慮摻點C#寫的程序,比如軟鍵盤,結果因為寫出來的程序太慢,實在無法和別的模塊合並,最終又回到C++重寫。

相信很多朋友都知道Windows Vista,這個系統開發早期比爾蓋茨想全部用C#寫,但是最終因為執行慢而放棄,結果之前無數軟體工程師日夜勞作成果一夜之間被宣告作廢。

Linux :C

Apple MacOS : 主要為C,部分為C++。 備註: 之前用的語言比較雜,最早是匯編和Pascal。

Sun Solaris : C

HP-UX : C

Symbian OS : 匯編,主要為C++。 (諾基亞手機)

Google Android :2008 年推出: C語言(有傳言說是用Java開發的操作系統,但最近剛推出原生的C語言SDK)

RIM BlackBerry OS 4.x : 黑莓 C++



二、圖形界面層

Microsoft Windows UI : C++

Apple MacOS UI (Aqua) : C++

Gnome (Linux圖形界面之一,大腳): C和C++, 主要是C。

KDE (Linux圖形界面) ,C++。



三、桌面搜索工具

Google Desktop Search : C++

Microsoft Windows Desktop Search : C++

Beagle (Linux/Windows/UNIX 下): C# (基於開源的 .net : Mono)



四、辦公軟體

Microsoft Office : 在 匯編 -> C -> 穩定在C++

Sun Open Office : 部分JAVA(對外介面),主要為C++ (開源,可下載其源代碼)

Corel Office/WordPerfect Office : 1996年嘗試過Java,次年被拋棄,重新回到C/C++

Adobe Systems Acrobat Reader/Distiller : C++



五、關系型資料庫

Oracle : 匯編、C、C++、Java。主要為C++。

MySQL : C++

IBM DB2 : 匯編、C、C++,主要為C。

Microsoft SQL Server : 匯編 -> C->C++

IBM Informix : 匯編、C、C++,主要為C。

SAP DB/MaxDB : C++



六、Web Browsers/瀏覽器

Microsoft Internet Explorer : C++

Mozilla Firefox : C++

Netscape Navigator : The code of Netscape browser was written in C, and Netscape engineers, all bought to Java (see M. Cusumano book and article) redeveloped the browser using Java. It was too slow and abandoned. Mozilla, the next version, was later developed using C++.

Safari : (2003年1月發布)C++

Google Chrome : (2008的發布)C++

Sun HotJava : Java (死於1999年)

Opera : C++ (手機上佔用率比較大)

Opera Mini : Opera Mini (2007) has a very funny architecture, and is indeed using both C++ and Java. The browser is split in two parts, an ultra thin (less than 100Kb) "viewer" client part and a server side responsible of rendering. The first uses Java and receives the page under the OBML format, the latter reuses classical Opera (C++) rendering engine plus Opera's Small Screen Rendering, on the server. This allows Opera to penetrate various J2ME-enabled portable devices, such as phones, while preserving excellent response time. This comes obviously with a few sacrifices, for instance on JavaScript execution.

Mosaic : 鼻祖(已死) C 語言



七、郵件客戶端

Microsoft Outlook : C++

IBM Lotus Notes : Java

Foxmail : Delphi



八、軟體開發集成環境/IDE:

Microsoft Visual Studio : C++

Eclipse : Java (其圖形界面SWT基於C/C++)

Code::Blocks : C++

易語言: C++

火山中文: C++

火山移動: C++



九、虛擬機

Microsoft .Net CLR (.NET的虛擬機): C++

Java Virtual Machine (JVM) : Java 虛擬機:C++



十、ERP軟體 (企業應用)

SAP mySAP ERP : C,後主要為「ABAP/4」語言

Oracle Peoplesoft : C++ -> Java

Oracle E-Business Suite : Java



十一、商業智能(Business Intelligence )

Business Objects : C++



十二、圖形處理

Adobe Photoshop : C++

The GIMP : C



十三、搜索引擎

Google : 匯編 與 C++,主要為C++



十四、著名網站

eBay : 2002年為C++,後主要遷至Java

facebook : C++ 和 PHP

This line is only about facebook, not its plugins. Plugins can be developed in many different technologies, thanks to facebook's ORB/application server, Thrift. Thrift contains a compiler coded in C++. facebook people write about Thrift: "The multi-language code generation is well suited for search because it allows for application development in an efficient server side language (C++) and allows the Facebook PHP-based web application to make calls to the search service using Thrift PHP libraries." Aside the use of C++, facebook has adopted a LAMP architecture.

阿里巴巴和淘寶: php->C++/Java(主要用)



十五、 游戲 :

匯編、C、C++

星際爭霸、魔獸爭霸、CS、帝國時代、跑跑卡丁車、傳奇、魔獸世界.... 數不勝數了,自己數吧

都是用C++開發的,C++語言靠近系統地稱,執行速度最快。比如你的兩個朋友與你分別玩用VB、Java、與C++編寫的「跑跑卡丁車」,你玩C++編寫的 游戲 已經跑玩結束了,發現你的兩個朋友還沒開始跑呢,那是相當的卡啊,



十六、編譯器

Microsoft Visual C++ 編譯器: C++

Microsoft Visual Basic 解釋、編譯器: C++

Microsoft Visual C# : 編譯器: C++

gcc (GNU C compiler) : C

javac (Sun Java compiler) : Java

Perl : C++

PHP : C



十七、3D 引擎

Microsoft DirectX : C++

OpenGL : C

OGRE 3D : C++



十八、Web Servers (網頁服務)

Apache : C和C++,主要為C

Microsoft IIS : C++

Tomcat: Java

Jboss: Java



十九:郵件服務

Microsoft Exchange Server : C->C++

Postfix : C

hMailServer : C++

Apache James : Java



二十:CD/DVD 刻錄

Nero Burning ROM : C++

K3B : C++



二十一:媒體播放器

Nullsoft Winamp : C++

Microsoft Windows Media Player : C++

Microsoft Windows Media Player : C++



二十二:Peer to Peer (P2P軟體)

eMule : C++

μtorrent : C++

Azureus : Java (圖形界面使用基於C/C++的SWT,類Eclipse)



二十三:全球定位系統(GPS)

TomTom : C++

Hertz NeverLost : C++

Garmin : C++

Motorola VIAMOTO : 2007年6月,停止服務。 Java。



二十四:3D 引擎

Microsoft DirectX : C++(相信玩 游戲 的同學都知道這個,現在最高版本是DX11)

OpenGL : C

OGRE 3D : C++


二十五:伺服器軟體

Apache: C

Nginx: C

IIS: C


二十六:其他相關

OpenStack: python

綜述

著名的軟體一般是系統軟體,軟體一般都分為系統軟體和應用軟體。開發軟體分為一次開發和二次開發,比如開發操作系統(系統軟體),就是一次開發;在操作基礎上進行應用軟體的開發,比如開發 游戲 ,就是二次開發。


一次開發的系統軟體,要直接調用硬體資源,必須使用簡單、直接的底層語言和中層語言,比如匯編和C語言;二次開發應用軟體等,因為應用軟體的類別比較多的,針對的情況比較復雜和具體,因此可以選擇的語言很多,比如,大數據人工智慧方面的有Python;安卓手機APP就是Java等等。

這里還有一個誤區,其實語言不重要,每種語言都差不多,重要的是開發環境和編程思想。要學習編程開發,學的不是語言,而是對於開發環境工具的使用和編程思維的錘煉。很多著名的軟體都是用C等底層語言編寫的,但是也可以用其他語言編寫,不過很少學C了,其中有商業的原因。(後面會解釋)

集成開發環境軟體

計算機語言是不可以單獨拿出來說的,比如我們說C語言,指的是C語言編譯器,而Python語言,指的是Python解釋器。而編譯器和解釋器卻都是用C語言編寫,是不是很意外,所以著名的軟體一般都是系統軟體,使用的是C語言,一個語言就要初中水平就可以學會了,但必須了解IDE開發環境。


要使用計算機語言,就必須安裝編譯器,或者是解釋器,程序員是在TXT文本上編寫語言的,用編譯器可以一次性編譯為可執行文件exe,用解釋器則可以逐條翻譯成機器語言並逐條執行。編譯器速度快,解釋器可以跨系統,到了別的系統,不需要程序員改寫程序,換一個解釋器就行了。

IDE集成開發環境具備圖形操作界面、編譯器、調制器、控制台,是非常重要的開發工具的,只會一個計算機的語言語法,卻不會使用IDE,基本上是沒用的!

編程思想

很多著名的軟體都是使用C等底層語言編寫的,而且所用的都是編譯器。當然還有另外一個原因,就是編程思想,C語言是面向過程,Python是面向對象。很明顯,一次開發的系統軟體肯定是面向過程的,而面向具體使用場景的應用軟體肯定是面向對象的。


高手可以自由使用編程思想、程序編寫時,交替使用各種語言、切換解釋器或者編譯器,達到隱藏核心代碼目的;又或者軟體的核心模塊採用C等底層代碼,保證軟體的運行速度。畢竟開發時都是模塊化的,不同模塊使用不同的方法都是可以的!

所以很多著名的軟體,往往是混合著各種語言,核心部分是C,其他部分則根據不同的情況選用不同語言,之所以會這樣做,是因為使用C開發軟體要耗費大量的時間太。摩爾定律推動硬體發展,軟體開發也受到影響,一個軟體晚幾天推出市場,效果完全不同,所以程序員經常加班趕工,速度才是最重要的。

總結

如上所述,著名的軟體是使用C等底層語言、編譯器語言、面向過程的語言編寫的,更多的是在一個軟體的核心部分使用C等底層語言、編譯器語言、面向過程的語言,其他則見機行事。

現在主流的語言是java、python和go

『捌』 PHP語言的簡介

PHP語言的簡介

我們知道網站開發,網站動態語言有很多,比如asp,asp.net,php,jsp。這里為何選擇PHP語言來討論,一來我學的就是這個語言,比較熟悉一點,二來以目前市場的需求量而言PHP算是很流行的。下面我就來具體介紹一下這門語言。

定義:

PHP原始為Personal Home Page的縮寫,已經正式更名為 "PHP: Hypertext Preprocessor"。注意不是「Hypertext Preprocessor」的縮寫,這種將名稱放到定義中的寫法被稱作遞歸縮寫。PHP於1994年由Rasmus Lerdorf創建,剛剛開始是Rasmus Lerdorf為了要維護個人網頁而製作的'一個簡單的用Perl語言編寫的程序。這些工具程序用來顯示 Rasmus Lerdorf 的個人履歷,以及統計網頁流量。後來又用C語言重新編寫,包括可以訪問資料庫。他將這些程序和一些表單直譯器整合起來,稱為 PHP/FI。PHP/FI 可以和資料庫連接,產生簡單的動態網頁程序。

PHP的特性:

1. PHP 獨特的語法混合了 C、Java、Perl 以及 PHP 自創新的語法。

2. PHP可以比CGI或者Perl更快速的執行動態網頁——動態頁面方面,與其他的編程語言相比,

PHP是將程序嵌入到HTML文檔中去執行,執行效率比完全生成htmL標記的CGI要高許多;

PHP具有非常強大的功能,所有的CGI的功能PHP都能實現。

3. PHP支持幾乎所有流行的資料庫以及操作系統。

4. 最重要的是PHP可以用C、C++進行程序的擴展!

PHP的優勢:

一、語法簡單易懂 。PHP主要是被用來做Web開發,應用環境比較單純,所以語法簡單易懂!

二、概念性知識少。較少涉及底層操作,語言的很多底層的細節問題無需掌握,所以理論概念較少,非常易學易用。

三、實用性極強。PHP提供了很多實用而且方便的內置函數,讓代碼更好寫。另外PHP有成熟的開發框架,幫你快速建站,輕松上手。

四、最高效編程語言。PHP主要是應用於web開發領域,其執行效率要遠高於其他編程語言,並且PHP還可以執行編譯後代碼,編譯可以達到加密和優化代碼運行,使代碼運行更快。

五、打通前端後端移動端 。PHP不僅可以完成前端頁面與後端平台的搭建,並且可以通過混合式開發,完成移動端應用的開發任務,完美適配iOS與Android操作系統,一招在手,全部搞定!

六、網站開發首選語言。國內外各大知名企業,如谷歌、facebook、阿里巴巴、網路、新浪等國內外一線互聯網企業的網站,均為PHP技術開發的,只因為PHP是做網站首選語言,沒有之一!


;

『玖』 看到有人說 PHP 是個垃圾語言,建議學習 Node.js、Python、Java,此話怎講

這點事情就讓你受刺激啊 你也太容易受刺激了 不要相信他胡扯 語言的優劣怎麼能用垃圾這個詞 Facebook是用PHP寫的

『拾』 PHP的性能探討和測試

緣起

關於PHP 很多人的直觀感覺是PHP是一種靈活的腳本語言 庫類豐富 使用簡單 安全 非常適合WEB開發 但性能低下 PHP的性能是否真 的就如同大家的感覺一樣的差呢?本文就是圍繞這么一個話題來進行探討的 從源碼 應用場景 基準性能 對比分析等幾個方面深入分析PHP之性能問題 並通 過真實的數據來說話

從原理分析PHP性能

從原理分析PHP的性能 主要從以下幾個方面 內存管理 變數 函數 運行機制來進行分析

內存管理

類似Nginx的內存管理方式 PHP在內部也是基於內存池 並且引入內存池的生命周期概念 在內存池方面 PHP對PHP腳本和擴展的所有內 存相關操作都進行了託管 對大內存和小內存的管理採用了不同的實現方式和優化 具體可以參考以下文檔 在內存分配和回收的生命周期內 PHP採用一次初始化申請+動態擴容+內存標識回收機制 並且在每次請求結束後直 接對內存池進行重新mask

變數

總所周知 PHP是一種弱變數類型的語言 所以在PHP內部 所有的PHP變數都對應成一種類型Zval 其中具體定義如下

圖一PHP變數

在變數方面 PHP做了大量的優化工作 比如說Reference counting和 on writer機制 這樣能夠保證內存使用上的優化 並且減少內存拷貝次數(請參考) 在數組方面 PHP內部採用高效的hashtable來實現

函數

在PHP內部 所有的PHP函數都回轉化成內部的一個函數指針 比如說擴展中函數

ZEND_FUNCTION(my_function);//類似functionmy_function(){}

在內部展開後就會是一個函數

voidzif_my_function(INTERNAL_FUNCTION_PARAMETERS);

voidzif_my_function(

intht

zval*return_value

zval*this_ptr

intreturn_value_used

zend_executor_globals*executor_globals

);

從這個角度來看 PHP函數在內部也是對應一個函數指針

運行機制

在話說PHP性能的時候 很多人都會說「C/C++是編譯型 JAVA是半編譯型 PHP是解釋型」 也就是說PHP是先動態解析再代碼運行的 所以從這個角度來看 PHP性能必然很差

的確 從PHP腳本運行來輸出 的確是一個動態解析再代碼運行的過程 具體來說 PHP腳本的運行機制如下圖所示

圖二 PHP運行機制

PHP的運行階段也分成三個階段

所以說 在PHP內部 本身也是存在編譯的過程 並且據此產生了大量的opcode cache工具 比如說apc eacc xcache等等 這些opcode cache在生產環境基本上在標配 基於opcode cache 能到做到「PHP腳本編譯一次 多次運行」的效果 從這點上 PHP就和JAVA的半編譯機制非常類似

所以 從運行機制上來看 PHP的運行模式和JAVA是非常類似的 都是先產生中間碼 然後運行在不同虛擬機上

動態運行

從上面的幾個分析來看 PHP在內存管理 變數 函數 運行機制等幾個方面都做了大量的工作 所以從原理來看 PHP 不應該存在性能問題 性能至少也應該和Java 比較接近

這個時候就不得不談PHP動態語言的特性所帶來的性能問題了 由於PHP是動態運行時 所以所有的變數 函數 對象調用 作用域實現等等都是在 執行階段中才確定的 這個從根本上決定了PHP性能中很難改變的一些東西 在C/C++等能夠在靜態編譯階段確定的變數 函數 在PHP中需要在動態運行 中確定 也就決定了PHP中間碼不能直接運行而需要運行在Zend Engine上

說到PHP變數的具體實現 又不得不說一個東西了 Hashtable Hashtable可以說在PHP靈魂之一 在PHP內部廣泛用到 包含變數符號棧 函數符號棧等等都是基於hashtable的

以PHP變數為例來說明下PHP的動態運行特點 比如說代碼

<?php

$var=「hello blog xiuwz 」;

?>

該代碼的執行結果就是在變數符號棧(是一個hashtable)中新增一個項

當要使用到該變數時候 就去變數符合棧中去查找(也就是變數調用對出了一個hash查找的過程)

同樣對於函數調用也基本上類似有一個函數符號棧(hashtable)

其實關於動態運行的變數查找特點 在PHP的運行機制中也能看出一些 PHP代碼通過解釋 編譯後的流程下圖

圖 PHP運行實例

從上圖可以看出 PHP代碼在pile之後 產出的了類符號表 函數符號表 和OPCODE 在真正執行的時候 zend Engine會根據op code去對應的符號表中進行查找 處理

從某種程度上 在這種問題的上 很難找到解決方案 因為這是由於PHP語言的動態特性所決定的 但是在國內外也有不少的人在尋找解決方案 因為 通過這樣 能夠從根本上完全的優化PHP 典型的列子有facebook的hiphop

結論

從上面分析來看 在基礎的內存管理 變數 函數 運行機制方面 PHP本身並不會存在明顯的性能差異 但由於PHP的動態運行特性 決定了 PHP和其他的編譯型語言相比 所有的變數查找 函數運行等等都會多一些hash查找的CPU開銷和額外的內存開銷 至於這種開銷具體有多大 可以通過後 續的基準性能和對比分析得出

因此 也可以大體看出PHP不太適合的一些場景 大量計算性任務 大數據量的運算 內存要求很嚴格的應用場景 如果要實現這些功能 也建議通過擴展的方式實現 然後再提供鉤子函數給PHP調用 這樣可以減低內部計算的變數 函數等系列開銷

基準性能

對於PHP基準性能 目前缺少標準的數據 大多數同學都存在感性的認識 有人認為 QPS就是PHP的極限了 此外 對於框架的性能和框架對性能的影響很沒有響應的權威數字

本章節的目的是給出一個基準的參考性能指標 通過數據給大家一個直觀的了解

具體的基準性能有以下幾個方面

裸PHP性能 完成基本的功能

裸框架的性能 只做最簡單的路由分發 只走通核心功能

標准模塊的基準性能 所謂標准模塊的基準性能 是指一個具有完整服務模塊功能的基準性能

環境說明

測試環境

Uname aPnux db forum test db _ # SMP Wed Aug : : CST x _ x _ x _ GNU/Pnux

Red Hat Enterprise Pnux AS release (Nahant Update )

Intel(R) Xeon(R) CPU E @ GHz

軟體相關

Nginx nginx version: nginx/ built by gcc (Red Hat )

Php (採用php fpm)

PHP (cP) (built: Mar : : )

Copyright (c) The PHP Group

Zend Engine v Copyright (c) Zend Technologies

with eAccelerator v Copyright (c) eAccelerator by eAccelerator

bingo

PHP框架

其他說明

目標機器的部署方式 nginx >php fpm >php腳本

測試壓力機器和目標機器獨立部署

裸PHP性能

最簡單的PHP腳本

<?php

require_once『 /actions/indexAction php』;

$objAction=newindexAction();

$objAction >init();

$objAction >execute();

?>

Acitons/indexAction php裡面的代碼如下

<?php

classindexAction

{

pubPcfunctionexecute()

{

echo『hello world!』;

}

}

?>

通過壓力工具測試結果如下

裸PHP框架性能

為了和 的對比 基於bingo 框架實現了類似的功能 代碼如下

<?php

require_once『Bingo/Controller/Front php』;

$objFrontController=Bingo_Controller_Front::getInstance(array(

『actionDir』=>『 /actions』

));

$objFrontController >dispatch();

壓力測試結果如下

從該測試結果可以看出 框架雖然有一定的消耗 但對整體的性能來說影響是非常小的

標准PHP模塊的基準性能

所謂標准PHP模塊 是指一個PHP模塊所必須要具體的基本功能

路由分發

自動載入

LOG初始化&Notice日誌列印 所以的UI請求都一條標準的日誌

採用bingo 的代碼自動生成工具產生標準的測試PHP模塊 test

測試結果如下

結論

從測試數據的結論來看 PHP本身的性能還是可以的 基準性能完全能夠達到幾千甚至上W的QPS 至於為什麼在大多數的PHP模塊中表現不佳 其實這個時候更應該去找出系統的瓶頸點 而是簡單的說OK PHP不行 那我們換C來搞吧 (下一個章節 會通過一些例子來對比 採用C來處理不見得有特 別的優勢)

通過基準數據 可以得出以下幾個具體的結論

PHP本身性能也很不錯 簡單功能下能夠達到 QPS 極限也能過W

PHP框架本身對性能影響非常有限 尤其是在有一定業務邏輯和數據交互的情況下 幾乎可以忽略

一個標準的PHP模塊 基準性能能夠達到 QPS( cpu idle)

對比分析

lishixin/Article/program/PHP/201311/21287

閱讀全文

與php編程規范facebook相關的資料

熱點內容
離心機壓縮機揚程高 瀏覽:656
xshell連接linux命令 瀏覽:5
把多個文件夾的內容合並在一起 瀏覽:481
基於單片機的澆花系統設計ppt 瀏覽:683
卷積碼編解碼及糾錯性能驗證實驗 瀏覽:354
請在刪除驅動器之前暫停加密什麼意思 瀏覽:785
光催化pdf 瀏覽:98
java字元串包含某字元 瀏覽:526
ssm身份認證源碼 瀏覽:466
預排序遍歷樹演算法 瀏覽:671
加密裝置如何打開ping功能 瀏覽:478
python下載372 瀏覽:901
u盤子文件夾隱藏 瀏覽:296
本地誤刪svn文件夾 瀏覽:685
海康威視python通道名 瀏覽:241
如何用app覆蓋全部曲庫 瀏覽:602
變異布林源碼 瀏覽:686
表格加密設置列印區域 瀏覽:437
卡耐基pdf下載 瀏覽:924
現在最流行的單片機 瀏覽:90