PHP代碼被PHP解譯器解釋後只可運行於伺服器上的Web端,這裡我們來簡單解析PHP程式的運行流程,需要的朋友可以參考下
一直想瞭解Web編程的技術。PHP是進行Web編程重要的一種語言,書上總是說,PHP是用於伺服器端的程式設計語言。但是,實在不能理解它是怎麼用於伺服器端編程,如何被運行。也看過一些PHP的教程,大多是介紹文法,卻沒有給出前面的問題解答。最近東拼西湊的看了一些東西,終於對PHP如何運行有了一些瞭解。
HTTP協議與PHP指令碼的觸發
HTTP是一種基於Request/Response的協議,是支援Web啟動並執行協議基礎。HTTP的用戶端發送Request
到伺服器端,伺服器端返回Response。Request中包含用戶端需要訪問的頁面的檔案名稱。伺服器端返回該檔案名稱指向的網頁。如果沒有使用PHP、JavaScript等,HTTP協議傳輸只能是靜態HTML檔案。也就是,HTML檔案不會受到使用者行為的影響,內容一直保持不變。
如果要實現動態網頁,就需要使用PHP或JavaScript。PHP是用於伺服器端的程式設計語言,JavaScript是多用於用戶端的程式設計語言。
PHP代碼是在伺服器端被執行的。使用者訪問一個包含PHP代碼的網頁時,發送Request到伺服器,其中包含網頁的檔案名稱。伺服器收到Request後,找到檔案名稱指向的檔案,發現其中嵌有PHP代碼,會調用PHP解譯器處理該檔案,然後將處理後的結果整理到Response,發送到用戶端。PHP代碼可以與伺服器端的資料庫或其他資源進行互動,或者根據使用者的操作產生不同的頁面。
因此,PHP指令碼的觸發是在伺服器收到用戶端的Request。收到一個Request後,伺服器觸發一個PHP指令碼;處理完指令碼後,返回結果到用戶端,等待下一個Request。當收到下一個Request後,伺服器觸發另一個(或同一個)PHP指令碼。兩次PHP指令碼的運行是相互獨立的,第二次指令碼的運行幾乎不受前一次指令碼啟動並執行影響。
JavaScript代碼一般是在用戶端被執行的,即被瀏覽器所處理。用戶端從伺服器端擷取的是JavaScript代碼,而不是代碼被執行後的結果,然後調用解譯器執行該代碼。
PHP的代碼塊
PHP代碼是可以嵌入到HTML檔案中的,經常可以在HTML檔案中看到散落在各處的PHP代碼塊。我也一直困惑在同一個HMTL檔案中,不同的PHP代碼塊之間是怎樣的關係。原來PHP是會忽略兩個PHP代碼塊之間HTML代碼的。
<head> <title>Test PHP Multiple Blocks</title></head><body> <p>This is HTML code.</p> <?php $var = 1; echo "<p>This is PHP code block 1. <br/> \$var=$var </p>"; ?> <p>This is HTML code too.</p> <?php $var += 1; echo "<p>This is PHP code block 2. <br/> \$var=$var</p>" ?></body>
代碼中有兩個PHP代碼塊,它們被HTML代碼隔開了。第1個PHP代碼塊聲明了1個變數$var;第2個代碼區塊引述$var,進行改變了它的值。用PHP執行上述代碼,得到的輸出如下。
<head> <title>Test PHP Multiple Blocks</title></head><body> <p>This is HTML code.</p> <p>This is PHP code block 1. <br/> $var=1 </p> <p>This is HTML code too.</p> <p>This is PHP code block 2. <br/> $var=2</p></body>
第2個代碼塊是可以引用$var的。雖然被HTML代碼隔開了,但是兩段代碼的執行完全忽略了HTML部分。PHP的輸出與下面沒有被HTML隔開的PHP代碼是一樣的,前者只是在PHP輸出結果之間插入了相應的HTML代碼。
<?php $var = 1; echo "<p>This is PHP code block 1. <br/> \$var=$var </p>"; $var += 1; echo "<p>This is PHP code block 2. <br/> \$var=$var</p>" ?>