php的相關概念及簡單配置

來源:互聯網
上載者:User

標籤:php基礎及配置


Activex:windows上面的一種技術,在用戶端執行程式的一種技術。


JVM:java虛擬機器,虛擬一個java的運行沙箱;裡面能夠載入java所需要的類等;


java被稱為一次編譯,到處啟動並執行程式。但是到處運行是有前提的,就是都要有一個JVM。



CGI:

protocol

web進程能夠根據對應程式的不同,調用不同的程式執行環境。

 

webapp:java,c,c++等;


程式設計語言:

靜態語言(編譯型語言)

  c,c++,java

  強型別,需要先編譯,才能運行。

  優點:效能好

  缺點:每一次改動都需要重新編譯;因此,C,C++特別適用於低端程式。可以操作硬體,

  但是它們眾多的功能都需要使用者自己去開發。開發及維護成本大。

 

動態語言:解釋型語言

shell,perl,python,php

弱類型,不需要編譯,只需要有個動態解譯器即可。

優點:便於維護,有眾多的共用模組,開發週期短,維護成本小。

 缺點:效能差;

 

 

 web伺服器網站:

 perl

 python,

 java(jsp,ssh(Spring,Structs,Hibernate)

 

 ruby,rails

 php:不需要其它架構就能用來開發web伺服器網站。

 

facebook:

       動態語言開發程式-->通過一個轉換器-->靜態語言;

       如: php-->Hiphop->C++程式;

       

       

       

程式員形成紀律:

    基本文法

    演算法,資料結構

    編譯原理

    

    

    Openstack:都是使用python開發的;

做自己更擅長的工作;  

    用自己最擅長的方式做自己正在做的工作;


bash:排錯的過程;

   詞法分析-->文法分析-->產生執行路徑;

   parser就是一個分析器;    

    

    

    

php:

     解譯器的工作:php

     php  source code -->編譯成二進位格式-->執行;

    關於PHP


一、PHP簡介

PHP是泛型服務器端指令碼程式設計語言,其主要用於web開發以實現動態web頁面,它也是最早實現將指令碼嵌入HTML源碼文檔中的伺服器端指令碼語言之一。同時,php還提供了一個命令列介面,因此,其也可以在大多數系統上作為一個獨立的shell來使用。


Rasmus Lerdorf於1994年開始開發PHP,它是初是一組被Rasmus Lerdorf稱作“Personal Home Page Tool” 的Perl指令碼,

 這些指令碼可以用於顯示作者的簡曆並記錄使用者對其網站的訪問。後來,Rasmus Lerdorf使用C語言將這些Perl指令碼重寫為CGI程式,

 還為其增加了運行Web forms的能力以及與資料庫互動的特性,

並將其重新命名為“Personal Home Page/Forms Interpreter”或“PHP/FI”。此時,PHP/FI已經可以用於開發簡單的動態web程式了,

這即是PHP 1.0。1995年6月,Rasmus Lerdorf把它的PHP發佈於comp.infosystems.www.authoring.cgi Usenet討論群組,

從此PHP開始走進人們的視野。1997年,其2.0版本發布。


1997年,兩名以色列程式員Zeev Suraski和Andi Gutmans重寫的PHP的分析器(parser)成為PHP發展到3.0的基礎,而且從此將PHP重新命名為PHP: 

Hypertext Preprocessor(超文本前置處理器)。此後,這兩名程式員開始重寫整個PHP核心,並於1999年發布了Zend Engine 1.0,這也意味著PHP 4.0的誕生。

2004年7月,Zend Engine 2.0發布,由此也將PHP帶入了PHP5時代。PHP5包含了許多重要的新特性,如增強物件導向編程的支援、

支援PDO(PHP Data Objects)擴充機制以及一系列對PHP效能的改進。


二、PHP Zend Engine(發動機、引擎)


Zend Engine是開源的、PHP指令碼語言的解譯器,它最早是由以色列理工學院(Technion)的學生Andi Gutmans和Zeev Suraski所開發,

Zend也正是此二人名字的合稱。後來兩人聯合創立了Zend Technologies公司。


Zend Engine 1.0於1999年隨PHP 4發布,由C語言開發且經過高度最佳化,並能夠做為PHP的後端模組使用。Zend Engine為PHP提供了

記憶體和資源管理的功能以及其它的一些標準服務,其高效能、可靠性和可擴充性在促進PHP成為一種流行的語言方面發揮了重要作用。


Zend Engine的出現將PHP代碼的處理過程分成了兩個階段:首先是分析PHP代碼並將其轉換為稱作Zend opcode的二進位格式(類似Java

的位元組碼),並將其儲存於記憶體中;第二階段是使用Zend Engine去執行這些轉換後的Opcode。


三、PHP的Opcode


Opcode是一種PHP指令碼編譯後的中繼語言,就像Java的ByteCode,或者.NET的MSL。PHP執行PHP指令碼代碼一般會經過如下4個步驟(確切的來說,

應該是PHP的語言引擎Zend):

1、Scanning(Lexing) —— 將PHP代碼轉換為語言片段(Tokens)

2、Parsing —— 將Tokens轉換成簡單而有意義的運算式

3、Compilation —— 將運算式編譯成Opocdes。注意:opcode是放在記憶體中的。

4、Execution —— 順次執行Opcodes,每次一條,從而實現PHP指令碼的功能


四、php的加速器(phpopcode的緩衝器)


基於PHP的特殊擴充機制如opcode緩衝擴充也可以將opcode緩衝於php的共用記憶體中,從而可以讓同一段代碼的後續重複執行時跳過編譯階段以

提高效能。由此也可以看出,這些加速器並非真正提高了opcode的運行速度,而僅是通過分析opcode後並將它們重新排列以達到快速執行的目的。


常見的php加速器有:


1、APC (Alternative PHP Cache)

遵循PHP License的開源架構,PHP opcode緩衝加速器,目前的版本不適用於PHP 5.4。項目地址,http://pecl.php.net/package/APC。


2、eAccelerator

源於Turck MMCache,早期的版本包含了一個PHP encoder和PHP loader,目前encoder已經不在支援。項目地址, http://eaccelerator.net/。


3、XCache

快速而且穩定的PHP opcode緩衝,經過嚴格測試且被大量用於生產環境。項目地址,http://xcache.lighttpd.net/


4、Zend Optimizer和Zend Guard Loader(zend最佳化器)

Zend Optimizer並非一個opcode加速器,它是由Zend Technologies為PHP5.2及以前的版本提供的一個免費、閉源的PHP擴充,

其能夠運行由Zend Guard產生的加密的PHP代碼或模糊代碼。

 而Zend Guard Loader則是專為PHP5.3提供的類似於Zend Optimizer功能的擴充。

 項目地址,http://www.zend.com/en/products/guard/runtime-decoders


5、NuSphere PhpExpress

NuSphere的一款開源PHP加速器,它支援裝載通過NuSphere PHP Encoder編碼的PHP程式檔案,並能夠實現對常規PHP檔案的執行加速。項目地址,http://www.nusphere.com/products/phpexpress.htm



www.php.net:php的官方網站地址;


五、PHP源碼目錄結構


PHP的源碼在結構上非常清晰。其代碼根目錄中主要包含了一些說明檔案以及設計方案,並提供了如下子目錄:


1、build —— 顧名思義,這裡主要放置一些跟源碼編譯相關的檔案,比如開始構建之前的buildconf指令碼及一些檢查環境的指令碼等。

2、ext —— 官方的擴充目錄,包括了絕大多數PHP的函數的定義和實現,如array系列,pdo系列,spl系列等函數的實現。 個人開發的擴充在測試時也可以放到這個目錄,以方便測試等。

3、main —— 這裡存放的就是PHP最為核心的檔案了,是實現PHP的基礎設施,這裡和Zend引擎不一樣,Zend引擎主要實現語言最核心的語言運行環境。

4、Zend —— Zend引擎的實現目錄,比如指令碼的詞法文法解析,opcode的執行以及擴充機制的實現等等。

5、pear —— PHP 擴充與應用倉庫,包含PEAR的核心檔案。

6、sapi —— 包含了各種伺服器抽象層的代碼,例如apache的mod_php,cgi,fastcgi以及fpm等等介面。

7、TSRM —— PHP的安全執行緒是構建在TSRM庫之上的,PHP實現中常見的*G宏通常是對TSRM的封裝,TSRM(Thread Safe Resource Manager)安全執行緒資源管理員。

8、tests —— PHP的測試指令碼集合,包含PHP各項功能的測試檔案。

9、win32 —— 這個目錄主要包括Windows平台相關的一些實現,比如sokcet的實現在Windows下和*Nix平台就不太一樣,同時也包括了Windows下編譯PHP相關的指令碼。



問題是php的編譯結果如何跟我們的apache伺服器結合起來?


CGI:COMMON  GATEWAY  INTERFACE

        apache進程和php解譯器之間如何建立關聯關係???

        

        ScriptsAlias查看其位置,將其進行訪問即可。

 


MVC是什嗎?

         model  view  control:模組,視圖,控制。一種軟體設計理念。

         將商務邏輯和資料顯示分離的一種編程技術。只需要將h1這個標籤放到一個獨立的檔案中,而當前這個指令碼只處理資料。


嵌入式web開發語言:

index.php語言,該怎麼寫,怎麼寫。

<html>

<head></head>

<h1> </h1>

<php 

php>

</html>

       當我們的web伺服器去執行的時候,只將php這個架構內的語言給調入到php解譯器中去執行即可。

       書籍:《大話設計模式》


我們的apache伺服器如何與php進行互動。

200:php頁面;

3000個static content(滿足滿意)

prefork:





http協議是stateless的協議,無狀態協議。

將php進程和apache進程合二為一。

DSO:dynamic shared object(動態共用模組)

  php_mod:將php給載入到apache裡面去。在apache內部就能完成php的處理。

  在我們的apache進程內部,自己就能裝載php模組。來完成對php頁面的載入。並且能夠將產生的結果直接給前端的其他處理機制即可。這樣一來我們需要的進程數目就少了。

  缺點:效能不太好。

  

架構:

      安裝一個php的伺服器,而不是解譯器;不需要apache管理,需要php自己管理。

      這樣子不要緊,apache與php伺服器之間通訊的機制就不叫CGI了。我稱為FASTCGI。

      這個模組名字叫fpm,FAST PHP MODE.能夠幫我們實現這個功能。

      

apache與php結合的方式有三種:

CGI:

模組:

FASTCGI:

對我們而言,最簡單的還是模組模式。而fastcgi功能很好,但是這個時候的apache僅僅提供的是靜態頁面的功能,而另外一款伺服器ngix的功能要比apache強大的多,所以

如果我們要使用FASTCGI的時候通常使用的是如下模式:

ngix+FPM


下面以php53作為例子進行說明:

yum install php53 -y

rpm -ql php53


[[email protected] a.org]# cat index.php 

<title>A</title>

<h1>D</h1>

<?php

phpinfo();

?>

[[email protected] a.org]# 


這是php的一個內建函數,顯示當前php的版本號碼。以及php編譯時間候要使用的選項。



[abc]

fdef

[bcd]

dddd

php的模組採用類windows的模式,每個中括弧是一個內容,只對當前的模組生效;

;是注釋行的意思。


本文出自 “汗水成就夢想” 部落格,請務必保留此出處http://redhatdragon.blog.51cto.com/9183870/1441263

php的相關概念及簡單配置

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.