Event MPM PHP是指在Apache HTTP Server中使用Event MPM啟用的PHP。它是一種異步的事件驅(qū)動(dòng)執(zhí)行PHP解釋器的方式,相比于傳統(tǒng)的Prefork MPM,它能夠更高效地處理連接請(qǐng)求,防止資源浪費(fèi)。這在具有高并發(fā)連接并要求快速響應(yīng)時(shí)間的Web應(yīng)用程序中非常有用。下面將介紹Event MPM PHP的相關(guān)知識(shí)。
使用Event MPM PHP要求以下三個(gè)條件:
(1)PHP必須被編譯為線程安全的。 (2)HTTP核心必須是擴(kuò)展事件(Event)型的。 (3)APC(Alternative PHP Cache)必須因?yàn)镻HP線程共享原因關(guān)閉,解決辦法是使用OPcache。
關(guān)于上述條件,舉例如下:
(1)PHP編譯為線程安全的。具體編譯方法見(jiàn)下: ./configure --enable-maintainer-zts --with-apxs2=/usr/sbin/apxs --with-mysql --with-zlib --enable-mbstring --with-gd --with-pgsql make make install 如果在編譯時(shí)出現(xiàn)了與zlib模塊相關(guān)的error,則在編譯加入–with-zlib參數(shù)。 (2)HTTP核心必須是事件型的 配置文件httpd.conf中的配置項(xiàng): LoadModule mpm_event_module modules/mod_mpm_event.soStartServers 2 MinSpareThreads 25 MaxSpareThreads 75 ThreadLimit 64 ThreadsPerChild 25 MaxRequestWorkers 150 MaxConnectionsPerChild 0 (3)使用OPcache PHP 5.5以上版本內(nèi)置了OPcache模塊。在httpd.conf加入以下代碼啟用OPcache: php_value opcache.enable 1 php_value opcache.enable_cli 1 php_value opcache.memory_consumption 512 php_value opcache.max_accelerated_files 100000 以上配置添加后,重啟服務(wù)即可生效。
除了配置條件,還需要了解與Event MPM PHP相關(guān)的知識(shí):
PHP的FcgiChildExitInterval可以更快地重用PHP進(jìn)程而不會(huì)破壞流或套接字。設(shè)置該參數(shù)可以允許子進(jìn)程保持開(kāi)放狀態(tài)并重用已經(jīng)連接的套接字。這可以防止不必要的連接并發(fā)生響應(yīng)延遲問(wèn)題。
# Increase FcgiChildExitInterval to reduce the likelihood of a deadlock FastCgiConfig -idle-timeout 120 -killInterval 240 # Allow PHP-FPM to start in non-American timezone date.timezone = Asia/Shanghai 在進(jìn)行以上配置后,重啟服務(wù)即可生效。
總之,使用Event MPM PHP能夠提高實(shí)時(shí)性、效率和吞吐量等多種方面,非常適合在高并發(fā)連接的Web應(yīng)用程序中使用。盡管需要滿(mǎn)足一些必要的條件和了解相關(guān)的知識(shí),但只要遵循正確的方法和經(jīng)驗(yàn),就能夠獲得很好的效果。
下一篇python的f含義