作者GALINE (天真可愛CQD)
看板PHP
標題Re: [請益] 各家php的差異?
時間Wed Aug 23 10:06:14 2017
※ 引述《shaomi (kerker)》之銘言:
首先確保腦袋裡面有這樣的圖像
---------- HTTP -------------- FastCGI ------- -----------
| Client | <------> | Web Server | <-------> | SAPI | PHP 本體 |
---------- -------------- ------- -----------
--------- ??? ------- -----------
| 指令行| <---> | SAPI | PHP 本體 |
--------- ------- -----------
免責聲明:我其實沒有真的看懂過底層。如果有大德發現哪邊不對或細節有出入錯,請協力補充...
瀏覽器透過 HTTP 跟 web server(例如 Apache)溝通。
> 「example.com 的伺服器先生你好,我要看 /h_ero.php」
而 web server 發現要跑的東西是 PHP,會透過 FastCGI 去告訴 PHP 引擎該做事了
> 「誒都,PHP 啊,有人要看 /h_ero.php,然後他的參數在這裡
> 麻煩你把 h_ero.php 的輸出傳給我,感謝~」
然後 PHP 引擎跑起來,最後你會印出一些字串(沒人規定你只能印 HTML 或 JSON)
> 「那,那個,阿帕契先生,你要的那個, /h_ero.php 我放在這裡了
> 然,然後,這邊有一些 header,麻,麻煩你一起給 client >////<」
最後 web server 會把輸出透過 HTTP 傳給 client
> 「小子,這是我們家 PHP 醬印出來的資料,跪著拿去看吧」
不同方式(例如從不同的 server,或是從指令行)呼叫 PHP 的時候
PHP 會用不同的 SAPI 去接這個球。
現在使用的 SAPI 可以用這些方式來看:
- 呼叫 php_sapi_name() 這個 function
- 直接看 PHP_SAPI 這個 constant
-------------------------------------------------------
: PHP-FPM
這不是「一種 PHP」,而是「管理 PHP 跟 Server 之間溝通的程式」
沒弄錯的話,這東西的位置會放在 cgi sapi 跟 webserver 中間
(所以我才會寫上面那一大段...)
關於這件事的細節,這篇說得滿好的
https://segmentfault.com/q/1010000000256516
: Quercus
這是有人用 Java 自己寫的 PHP 引擎
如果你需要「用 Java 跑 PHP」的時候可以研究一下
沒這個需求的話就別研究它了....
: Zend Server
一大包面向企業端的伺服器軟體,多了一堆有的沒的功能
PHP 是其中一個部分
然後你大致上可以想成「官方版 PHP 引擎」是 Zend 社寫的
不過不需要弄 Zend Server 那一包東西也能用 PHP
: appserver.io
跟他不熟,從網頁上看起來是「我用 PHP 寫了一個 server」
然後多了一堆有的沒的功能
以上面的例子,大概可以想成少了一個中間人這樣。
不過少掉中間人不見得比較快,要讓妹子接客然後不會怯場是另一門學問
著眼點應該是靈活性,以及裝機器可以少裝一些東西,吧,我猜...
-------------------------------------------------------
Quercus vs 官方版,你不寫 Java 的話當然是選官方版
其他的東西並不是「其他種 PHP」
另外,順便介紹兩個有名的「其他種 PHP」
都是 Facebook 搞出來的
HHVM,這是「Facebook 版的 PHP 引擎」
最初主打特色是「靠北邊那麼快」,可以差一個零
不過 PHP7 出現之後兩邊的效能差距急速拉近,現在兩邊幾乎平起平坐
HACK,這是「Facebook 版的 PHP 語言」
主要特點是加了靜態型別。跑在 HHVM 引擎上,官方版 PHP 不支援
--
Sent from my little pony
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.27.59.170
※ 文章網址: https://www.ptt.cc/bbs/PHP/M.1503453981.A.972.html
※ 編輯: GALINE (114.27.59.170), 08/23/2017 10:12:39
推 locklose: 妹子那段描述的相當貼切 08/23 11:17
推 Boston: 推 08/24 18:04
推 JohnRoyer: nice explain ~ XD 08/29 10:06
推 grassocean: 推一個 09/01 17:24