看板 PHP 關於我們 聯絡資訊
※ 引述《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