php-cli和php-fpm的關係是什嗎?
另外還有個php-zts,百度了一下叫“安全執行緒版”。
那麼,這三個東西,該用哪個呢,能分別說一下它們的使用情境嗎?
https://hub.docker.com/_/php/
回複內容:
php-cli和php-fpm的關係是什嗎?
另外還有個php-zts,百度了一下叫“安全執行緒版”。
那麼,這三個東西,該用哪個呢,能分別說一下它們的使用情境嗎?
https://hub.docker.com/_/php/
CLI是命令列版本。
FPM是作為Apache或者Nginx等伺服器軟體處理PHP檔案的擴充。
PHP的預設版本是不支援安全執行緒的,這個安全執行緒問題可以去瞭解PHP擴充開發方面的相關知識,這是因為C語言方面的問題了。
cli和fpm是php的兩種運行方式,而安全執行緒和非安全執行緒應該才能說的上是版本。是否開啟安全執行緒可以在編譯PHP的時候進行選擇的。
簡單理解呢,cli就是你在命令列裡運行PHP用的,fpm就是通過web訪問用的
cli就是我們在命令列裡使用的那個php命令,其實它也可以提供HTTP服務,因為它內建了一個HTTP伺服器:
php -S 127.0.0.1:80 -t /www /www/index.php
這樣就建立了一個監聽127.0.0.1上80連接埠,根目錄為/www的單進程HTTP服務了,可以用於PHP開發與測試.
其中index.php是重寫規則,可以用PHP實現,比如:
上面這段PHP代碼跟採用index.php作為前端控制器(路由)的架構的Nginx重寫規則含義相近.
location / { try_files $uri $uri/ /index.php?$args;}
php-fpm是一個多進程架構的FastCGI服務,內建php解譯器,進程後台常駐,內建進程管理器,支援進程池配置,多配合Nginx使用.
Linux上自行編譯的PHP預設是非安全執行緒的,什麼時候需要安全執行緒呢?
比如你要使用pthreads這個PHP多線程PECL擴充,
或者你的PHP跑在一個多線程的容器內,比如Apache event MPM,這是一個多線程的MPM.