PHP是一種開源,服務器端的腳本語言,常用于Web開發中,而php-fpm是在PHP編程語言的飛快進化中發展出來的一種新型的PHP FastCGI管理器。此管理器使用進程池,使PHP應用可以長期(一直)運行,而不必為每個HTTP請求創建一個新的進程。但是,php和php-fpm之間存在一些根本的區別,下面將介紹php和php-fpm之間的不同之處。
在PHP中,你必須專門為所有的并發連接創建一個新的進程。這意味著對于每次服務器請求,PHP都會創建一個新的進程來處理它。在這種情況下,如果服務器訪問量增加,PHP將需要創建更多的進程來處理所有的請求。這就可能導致服務器資源不足,使服務器處理速度變慢,并可能使服務器掛掉。由于php-fpm采用的是進程池模型,因此大大減少了進程間的切換開銷,因此處理速度加快,服務器性能得到了大大優化。
此外,PHP使用FastCGI作為協議來與Web服務器通訊,但FastCGI是基于傳送報文來進行通訊的。這意味著,每次處理一個請求,PHP都必須對請求報文進行解析,然后產生響應。從而,即使每次請求處理都需要耗費計算時間,也增加了服務器的響應時間。php-fpm采用的是PHP內核的同步SOCKET通訊,通過使用共享內存、本地套接字、TCP/IP協議三種方式,可以大大減少這種消耗。
在高負載的情況下,通常使用nginx和php-fpm進行搭配。Nginx是一種高性能的、開源的HTTP服務器,同時也可以充當反向代理服務器,解決了Apache作為腳本服務器的某些限制。與Apache不同,Nginx是一種事件驅動的服務器,對I/O阻塞的處理方式更為靈活高效。通過使用Nginx作為Web服務器,可以讓php-fpm提供PHP處理功能,從而高效處理請求,提高并發性。
總結來說,php和php-fpm之間的區別主要是php是基于請求/響應模式的,而php-fpm是基于進程池的。使用php-fpm可以大大減少服務器的訪問時間,增加服務器的并發處理量。如果你需要獲得更好的服務器性能,可以嘗試將nginx與php-fpm搭配使用。