PHP Worker是什么,应该如何使用?

自学咖网努力为各位打造免费分享知识与教程网站

在选择托管方案时,选择最符合你的WordPress网站需求的方案是非常重要的。

例如,一个每月有50,000访问者的电子商务网站通常需要比相同流量的简单博客多得多的资源。

这仅仅是因为电子商务网站通常是动态的,需要更多的PHP和数据库查询资源。

这就是PHP worker发挥作用的地方。阅读下面的内容,了解什么是PHP worker,以及如何使用它们来加快网站请求的处理速度。

什么是PHP工作者?

WordPress如何使用PHP Workers?

PHP Worker与CPU的关系

如何优化PHP工作者对你的网站的使用

PHP工作人员不足的后果

估计所需PHP工作人员的数量

什么是PHP工作者?

在WordPress的上下文中,PHP worker构建页面,处理预定的后台任务,等等。由于PHP工作人员直接负责为网站访问者生成HTML页面,他们决定了网站在任何给定时间可以处理多少未缓存的请求。

例如,假设你的WordPress站点配备了两个PHP工作器,并且没有设置页面缓存。如果四个请求同时到达您的站点,其中两个将被立即处理,而另外两个必须在队列中等待,直到前两个请求被处理。

虽然我们已经实现了服务器级缓存,但是对于绕过或失去缓存的请求,PHP工作人员变得非常重要,因为他们必须为每个请求工作。

我们通常会在电子商务和社区论坛网站上看到大量未缓存的请求。因此,这些站点将需要额外的PHP工作人员来确保每个请求都得到及时处理。

如果你的网站是高度优化的或者没有很多PHP代码(例如,复杂的主题或者大量的WordPress插件),那么处理每一个请求应该几乎是立即发生的。即使有2个PHP工作器和4个请求,这4个请求都会被快速处理。

简单来说,PHP工作器就是运行PHP代码的服务器上的后台进程。

WordPress如何使用PHP Workers?

在讨论如何优化WordPress中PHP worker的使用之前,我们必须先了解WordPress是如何使用PHP worker的。

未缓存环境中的典型请求如下:

Web服务器(Nginx或Apache)接收访问者的请求。

Nginx将请求传递给PHP。

PHP根据需要查询MySQL数据库,并使用主题的PHP模板生成HTML页面。

将呈现的HTML页面从PHP返回到Web服务器。

此页面提供给访问者。

在上面强调的过程中,步骤3是最耗时和最消耗资源(CPU和RAM)的。具有最少数据库查询和高效PHP代码的高度优化网站将相对较快地完成第三步。

相反,一个编写糟糕的PHP代码并进行大量不必要的数据库查询的网站将需要更多的时间来完成步骤3,这意味着PHP工作人员的请求将需要更长的时间。

PHP Worker与CPU的关系

当谈到WordPress性能时,PHP worker和可用CPU之间的关系是一个需要考虑的重要因素。

如果CPU资源不足是你网站的瓶颈,那么增加PHP worker的数量并不会提高你网站的性能——只会让你的网站同时处理更多的请求,每个请求的性能都会下降。

让我解释一下。

想象一个带水管的消防栓。只要接一根软管,消防栓就能提供足够的水压。现在,如果我们在消防栓上接十根水管,会发生什么?

有限的水压分布在十根软管上,这意味着每根软管完成工作所需的水压更小。在这个类比中,消防栓是CPU,水龙带是PHP worker。

考虑到上述情况,如果你的主机一直建议你添加PHP worker而不提CPU,你就要小心了。

让我们暂时回到消防栓的比喻。

想象一下,你需要用5条水管扑灭10场大火。连接好所有五根软管后,你会意识到消防栓仍然在提供足够的水压。

在这种情况下,连接更多的软管是有意义的,因为消防栓的水压不是瓶颈。

类似地,如果你的站点没有足够的CPU和RAM开销,那么你应该考虑增加PHP工作器的数量来提高性能。

如何优化PHP工作者对你的网站的使用

我们已经解释过PHP workers是使用PHP代码生成HTML页面的后台进程。现在,减少和优化PHP工作器使用的最明显的方法是减少满足站点请求所需的CPU和PHP资源的数量。

这是怎么做到的?

1.为你的WordPress网站设置缓存

减少PHP worker使用的第一步是为你的WordPress站点设置一个缓存层。默认情况下,WordPress是一个动态CMS,可以按需满足每一个页面请求。

对于博客、在线杂志、作品集等很多网站来说,没有必要使用PHP为每个请求动态生成页面。

页面缓存

你正在阅读的博客文章是一个不需要动态生成的页面的完美例子。与我们的许多其他文章一样,本文中的内容被设计为静态的,因此不需要花费CPU资源来连续生成相同的页面。

相反,最好让PHP生成一次页面,然后缓存它。与使用PHP动态生成页面相比,页面缓存有很多明显的优势。

例如,想象一下,如果你网站上的一篇博客文章在发布后几个小时内传播并获得了100,000次页面浏览量。如果没有页面缓存,您的PHP工作人员可能会不堪重负,您的服务器可能会崩溃。

使用页面缓存,只会动态生成首页视图。其他99,999个请求将由您的页面缓存提供服务,这使用了相对较少的CPU资源。

有两种方法可以为你的WordPress网站设置页面缓存。

使用Nginx等Web服务器进行服务器级页面缓存。

使用WP-Rocket等WordPress插件来缓存基于插件的页面。

为了获得最佳性能,我们建议尽可能使用服务器级页面缓存,比如Nginx的FastCGI缓存模块,以获得超快的性能。

如果你的主机没有提供服务器级的页面缓存选项,下一个最好的选择是使用WordPress缓存插件来实现应用程序级的页面缓存。

对象缓存

对于WooCommerce商店、社区论坛等无法有效利用页面缓存的WordPress站点,在MySQL数据库前加入类似Redis的持久对象缓存,可以提高性能,减轻PHP worker的负载。

如果没有持久对象缓存,将为每个请求执行MySQL数据库查询,即使结果与前一个查询相同。

例如,绕过页面缓存的社区论坛站点将对数据库进行单独的相同查询,以获取帖子数据来构建页面。

对于具有高流量和大量数据库的站点,这种查询数据库的方法效率很低,因为它使用PHP worker为各个请求生成相同的查询结果。这就是Redis的用武之地。

Redis将数据库查询的结果存储在RAM中,这允许PHP抓取执行的查询结果。这种对象缓存方法允许PHP工作人员节省CPU资源,花更少的时间来完成请求,因为它消除了重复数据库查询的需要。

2.优化你的PHP代码

除了设置页面缓存,另一个可以帮助你减少PHP worker使用的策略是优化你的PHP代码。在WordPress的上下文中,“优化PHP代码”可能意味着各种不同的事情,所以让我们更深入地了解一下。

WordPress最流行也最烦人的特性之一(取决于你问的是谁)是它通过插件和代码片段的可扩展性。

如果你想在你的WordPress网站上添加一个股票报价插件,你可以使用这个插件。同样,如果你想添加一个自定义字体,也有一个functions.php代码片段。

用额外的功能扩展WordPress core已经变得如此容易,以至于我们经常走极端而没有考虑到对网站性能的潜在影响。

因此,优化PHP代码的第一个方法是执行站点范围的审计,以确定哪些插件和代码片段是真正需要的。

选择高级插件。

通常情况下,WordPress网站的插件数量没有插件质量重要。如果该插件在过去六个月内没有更新,我们建议选择另一个符合要求的插件。

之所以这样,是因为WordPress在不断改进。如果一个插件多年没有更新,很可能它的代码没有使用最新的WordPress开发和安全最佳实践。

相反,如果插件每隔几周就不断更新,那么开发者可能会认真对待质量,这使它成为你的WordPress网站的一个好选择。

仅在需要时使用插件。

如果你希望在你的网站上执行一个简单的任务,比如添加JavaScript或CSS,那么你并不总是需要插件。相反,您可以将代码直接添加到主题的PHP模板或带有子主题的style.css文件中。

下次你考虑安装一个插件时,请花些时间看看它是否100%有必要。有时候,没办法再装一个插件,也没关系。其他时候,您可以通过不安装不必要的插件来避免增加额外的代码膨胀。

选择一个轻量级主题。

根据我们监控数千个WordPress网站的经验,我们发现主题偶尔会导致PHP性能不佳。为了迎合WordPress作为通用CMS的多功能性,一些开发者编码主题以适合各种用例。

通常这样会导致代码繁重、代码臃肿的题目无法有效使用PHP和数据库查询。

在建立一个WordPress网站时,选择一个主题是很重要的,这是最高效和可定制的——generate press、OceanWP和Astra有三个例子。

3.选择一个注重性能的WordPress主机

信不信由你,选择正确的WordPress主机会对你网站的表现产生巨大的影响。由于PHP工作人员的效率与CPU和RAM直接相关,因此将您的网站托管在具有最新硬件的现代服务器上可以帮助您优化PHP工作人员的使用。

这里有两个例子说明为什么选择一个以性能为中心的主机对你的WordPress网站很重要。

高性能CPU

使用PHP资源执行代码。更快的CPU意味着更快的代码执行。

快速固态硬盘存储

磁盘I/O速度会对代码执行和数据库查询产生直接影响。如果您的数据库存储在一个缓慢的机械磁盘或基于云的SSD上,没有足够的IOPS(每秒输入/输出操作),您的PHP员工将被迫花更多的时间来满足请求。

4.与性能专家合作(可选)

如果您不确定如何解决网站的性能问题,我们建议您与合格的性能专家一起诊断问题。

专家可以通过使用高级监控工具,如New Relic或WordPress plugin Query Monitor,帮助您识别代码中的特定瓶颈。

通过放大和检查单个PHP进程和数据库查询,您可以识别给网站上的PHP工作人员带来高负载的特定代码块及其相关函数。

总结PHP工作者优化,请记住以下提示。

应该用PHP worker扩展CPU和RAM。如果CPU使用率被锁定在100%,增加更多的PHP工作线程不会提高性能。

使用面向性能的主机托管您的网站可以解决许多性能问题。

页面缓存和对象缓存可以显著减少PHP的工作量。

使用高质量的WordPress插件和主题可以减少网站上不必要的代码膨胀。

如有必要,请与性能专家一起识别和解决复杂的问题。

PHP工作人员不足的结果

为了让你的WordPress网站获得快速可靠的性能,确保它有足够的PHP工作人员是非常重要的。当PHP工作人员已经忙于一个站点时,他们开始构建一个队列。

一旦达到PHP worker的限制,队列将开始推出旧的请求,这可能导致504错误或不完整的请求。

由于缺乏PHP工作人员,我们看到的另一个常见错误是502坏网关错误。这些与504错误略有不同,因为这些错误发生在PHP工作队列超时60秒之后。

这些错误不仅会给访问者带来不好的用户体验,还会对你网站的SEO产生负面影响。

自学咖网努力为各位打造免费分享知识与教程网站

52(坏网关)错误

有许多不同的因素会导致页面加载缓慢或不正确。例如,如果未缓存的请求需要数据库中的大量数据,则生成的查询可能需要20-30秒才能完成。

在这种情况下,一个PHP工作人员至少会被占用半分钟。如果您站点只有两个PHP工作人员,那么两三个这样长的请求就足以导致错误。

要解决这个问题,优化MySQL数据库,在CPU还没有达到极限的时候添加PHP worker,可以提高性能。

估计所需PHP工作人员的数量。

一般来说,专注于静态内容的网站——文章、静态页面和作品集——不需要很多PHP工作人员。

对于具有更多动态功能的大型WordPress网站,如电子商务或论坛,我们发现4个PHP worker是一个很好的起点。然而,这可能会因站点而异,因为每个站点都有自己独特的主题、插件、数据库查询和缓存与未缓存的比率。

在某些情况下,可能需要更多的PHP工作人员来获得快速可靠的性能。

PHP工作进程限制图表

一些主机服务提供商将提供PHP工作线程限制图表,允许您检查PHP引擎在其错误日志中报告最大分配工作线程数的次数。这个图表可以帮助您衡量性能优化是否会影响PHP工作器的使用。

自学咖网努力为各位打造免费分享知识与教程网站

顶级缓存旁路

例如,如果您将站点的PHP版本从5.6切换到7.4,您可能会看到PHP工作线程限制下降,因为PHP 7.4比5.6快得多。

类似地,如果您与性能专家一起修复长数据库查询并切换到轻量级主题,您可以使用PHP工作线程限制图表来查看优化前后的差异。

高速缓存分析图表

您还可以使用服务器提供商的缓存分析报告(如果有)来确定缓存命中、绕过、未命中和过期的数量。当优化您的网站对PHP worker的使用时,这些数据可能特别有用。

使用查询字符串绕过缓存

默认情况下,查询字符串为https://kinstalife.com/?查询=123的URL会绕过页面缓存。在某些情况下,查询字符串可能会导致不必要的PHP和CPU使用率急剧上升。

例如,如果你访问脸书的链接,你通常会在URL的末尾看到查询字符串?fbclid= .同样,单击电子邮件简讯中的链接后,您可能会看到UTM跟踪参数。

自学咖网努力为各位打造免费分享知识与教程网站

使用查询字符串(?查询= 123)

如果你的网站上的帖子像病毒一样传播,并且通过查询字符串不断被访问,你将能够使用缓存分析报告来识别特定的URL。

有了这个关键信息,就可以强制缓存这个特定的URL,以减少PHP worker的负载。

识别资源密集型插件

在某些情况下,缓存分析图表还可以用于识别资源密集型插件和进程。

例如,如果您看到顶部缓存绕过URL并指向特定插件目录中的文件,那么该插件很可能是PHP worker高使用率的原因。

如果在缓存绕过列表中看到大量插件相关的请求,可以与开发人员合作解决问题,或者切换到使用较少资源的插件。

总结

维护一个快速WordPress网站的目标是最大化后端的效率。通过在工作器数量、CPU利用率和代码优化之间找到平衡,WordPress可以成为一个非常高性能的CMS。

hmoban主题是根据ripro二开的主题,极致后台体验,无插件,集成会员系统
自学咖网 » PHP Worker是什么,应该如何使用?