PHP性能一直是影响网站托管的一个重要问题。PHP是当前网络上使用最广泛的服务器编程语言,远远领先于其他语言。最受欢迎的内容管理系统和电子商务应用程序,如WordPress、Joomla、Drupal、Magento等,都是用PHP编写的。
PHP-FPM加速了在繁忙服务器上的PHP执行,使其成为提高网站速度和优化服务器资源的有效工具。
本文详细介绍了PHP-FPM的工作原理,并解释了如何在cPanel & WHM中安装和配置它。
什么是PHP-FPM?
PHP-FPM是一种加速繁忙网络应用程序的PHP运行环境,同时帮助系统管理员控制服务器资源的使用。
传统的PHP运行环境,比如Apache的mod_PHP,是在Web服务器内部工作的。每个连接都会消耗一部分服务器资源。如果有太多并发连接,服务器可能会耗尽内存等资源,影响所有网站的性能。
而PHP-FPM则不同:它运行于Web服务器外部,并使用工作进程池来执行代码。工作进程在请求到来时已经准备好并等待,你可以控制池中的工作进程数量,确保它们不会耗尽所有服务器资源。
具体工作原理是:
Apache通过一个叫FastCGI的高速接口将代码发送给PHP-FPM。
一个监督进程从池中选取一个工作进程并将代码交给它。
工作进程执行代码,然后将结果返回给Apache,Apache再将结果发送到Web浏览器。
工作进程完成后返回池中等待下一个代码块。
如果有太多并发连接,一些连接可能需要等待空闲的工作进程,但它们不会耗尽整个服务器的资源。在繁忙的Web服务器上,工作进程池比其他方法更快更有效。
在CentOS和EasyApache中开始使用PHP-FPM
在cPanel & WHM中启用和配置PHP-FPM非常简单。你可以选择哪些域名使用它,并设置影响其行为的配置参数。
首先是在WHM的MultiPHP Manager中的系统PHP-FPM设置中将其打开。
点击"开启"后,WHM会使PHP-FPM可用,但不会自动为所有域名激活它。你可以通过点击"将所有账户转换为PHP-FPM"强制服务器上的所有账户使用PHP-FPM。
或者,你可以在本页面底部的表格中为单个域激活PHP-FPM。要一次为多个域名激活PHP-FPM,请在表格中选择它们,然后在下拉菜单中选择"开启"。
在cPanel中配置PHP-FPM
激活PHP-FPM后,你可以在MultiPHP Manager中配置系统默认设置和各个域的设置。
点击"系统PHP-FPM配置(System PHP-FPM Configuration)"标签。
在此部分中,你可以更改三个池设置。这些是应用于域名池的默认值:
最大请求数(Max Requests):每个工作进程在重新启动前应执行的请求数量。此设置有助于解决内存泄漏问题。默认值为20,适用于大多数主机场景,但在流量较大的服务器上,你可能希望将其增加到40到60之间。
进程空闲超时(Process Idle Timeout):空闲工作进程在关闭前等待的时间。空闲进程会消耗资源,因此我们不希望它们过多,但也不希望它们过早关闭,因为启动新进程需要时间。默认值为10秒,可能对于繁忙的服务器来说太低。
最大子进程数(Max Children):每个池中的最大工作进程数量。默认值为5。
在池选项下方是PHP INI指令。我们在界面中展示了几种最有用的指令,你可以在PHP的运行时配置文档中找到更多信息。我们将在下一部分向你展示如何添加其他指令。