面試中,我們經常會被問到,php是怎麼執行的,swoole為什麼比nginx和php-fpm的組合效率高等等程序模式方向的內容。平時倒是多多少少有聽過sapi,php-fpm,master/worker,但要是真回答起來,就開始模稜兩可甚至概念都會有點模糊。因此特地整理總結了一下,也為大家理清一下思路。
apache和loadmodule模式
apache和loadmodule模式執行php應該是屬於比較經典的了,小馬初識php就是用的這個模式。是否還記得我們安裝完apache和php後在 apache的配置檔案 httpd.conf中加上這樣的配置:
所以,這種方式本質是用 loadmodule 來載入 php5_module,把php作為apache的乙個子模組來執行。當通過web訪問php檔案時,apache就會呼叫php5_module來解析php**。php5_module通過sapi將資料傳給php解析器來解析php**。如圖。
sapi(server api)其實就是一種協議,sapi提供了乙個和外部通訊的介面,使得php可以和其他應用(apache,nginx等)進行互動資料。常見的有如php提供給apache和nginx的php5_module、cgi、fastcgi,提供給iis的isapi(記得小馬曾經在.net團隊中配置過iis跑php),提供給shell的cli等協議。
程序執行緒及swoole程序模型
程序和執行緒,涉及到作業系統的基本知識,但是很多人都是不懂的,因為php簡單易學,大部分人在零基礎學 php程式設計的時候都沒有去了解這些,在學習 swoole 之前必須要了解程序執行緒這樣我們才能對 swoole 的執行機制有一定的了解,更易於開發。這是阮一峰所寫的乙個解釋,寫的非常不錯。1 計算...
swoole的程序模型架構
2014年5月5日 韓 天峰 swoole的強大之處就在與其程序模型的設計,既解決了非同步問題,又解決了並行。swoole啟動後主執行緒會負責監聽server socket,如果有新的連線accept,主線程會評估每個reactor執行緒的連線數量。將此連線分配給連線數最少的reactor執行緒。這...
swoole的程序模型架構
swoole的強大之處就在與其程序模型的設計,既解決了非同步問題,又解決了並行。swoole啟動後主執行緒會負責監聽server socket,如果有新的連線accept,主線程會評估每個reactor執行緒的連線數量。將此連線分配給連線數最少的reactor執行緒。這樣的好處是 每個reactor...