What Are PHP Workers? A Plain-English Guide for WordPress Site Owners

performance

If your WordPress site has ever slowed to a crawl during a traffic spike, php workers are a likely culprit — and most site owners don't know they exist until something breaks. These server processes control how many requests your site can handle at the same time. This guide covers what they are, what happens when they run out, and what you can do about it.

What Are PHP Workers? A Plain-English Guide for WordPress Site Owners

Key Takeaways

Key Takeaways
Photo by Caio on Pexels

How PHP Workers Actually Work: PHP-FPM and Concurrent Requests Explained

PHP-FPM, short for FastCGI Process Manager, controls your pool of PHP workers on nearly every modern hosting environment. When a visitor lands on your WordPress site, the server receives that request and hands it to an available worker. That worker runs the PHP code, assembles the page, and sends the response back to the browser. Once it finishes, it's free for the next request.

Each worker handles one request at a time. If your site has four workers and five requests arrive at once, the fifth request waits in a queue until a worker finishes. That queuing is by design. The problem starts when the queue grows faster than workers can clear it.

PHP-FPM has become the standard way PHP is served in modern hosting environments, from shared servers to managed WordPress platforms. It gives hosts precise control over how many workers run per site, how much memory each worker can use, and how idle workers are recycled. That control is what allows managed WordPress hosts to list PHP worker counts as a defined, plan-level metric — something you can compare directly when choosing a hosting tier.

What Is PHP-FPM and Why Does It Matter?

PHP-FPM manages a pool of worker processes and acts as the traffic controller between your web server and PHP itself. When a hosting plan advertises "2 PHP workers" or "8 PHP workers," that number refers to the pool size PHP-FPM maintains for your site. A larger pool means more requests process in parallel. A smaller pool means requests queue sooner.

PHP-FPM also handles worker recycling, ending processes that run too long or use too much memory. That's a stability feature that matters as much as raw worker count. The pool size your host configures is the direct link between your plan's listed specs and your site's real-world capacity.

WordPress Performance and PHP Worker Exhaustion: Signs Your Site Is Struggling

WordPress generates pages dynamically. For every uncached request, it pulls content from a database, runs plugin logic, and assembles HTML before sending anything to the browser. Each of those steps requires a worker to stay occupied for the full duration. That's very different from serving a static HTML file, which needs no PHP at all.

When all workers are occupied and new requests keep arriving, those requests stack up. The web server holds them, waiting for a worker to free up. If none frees up within the server's timeout window, the request fails. That failure produces the errors most site owners recognize: a 504 Gateway Timeout means the server gave up waiting for PHP to respond, and a 502 Bad Gateway often signals that the connection to the PHP process failed entirely.

504 Gateway Timeout and Request Queuing: What These Errors Are Telling You

A 504 error during a traffic spike doesn't mean your server crashed. It means your worker pool hit its limit and the queue backed up past the server's timeout threshold. The server is working — it just can't get PHP to respond in time because every worker is already busy.

Request queuing is the step before the error. When the queue is short and workers clear quickly, visitors may notice only a slightly slower load time. When the queue grows, load times climb. When it overflows or times out, errors appear. The shift from slow to broken can happen in minutes.

Traffic spikes are the most common trigger. A post going viral, a product launch, a newsletter mention, or a flash sale can send a surge of visitors to a site that handles normal traffic without trouble. Many site owners discover their PHP worker limit for the first time during one of these events, not during a routine Tuesday afternoon.

The link between worker exhaustion and Time to First Byte is direct. TTFB measures how long the server takes to send the first byte of a response. When workers are queued, TTFB climbs because the request sits idle before any PHP processing begins. A site with a fast TTFB under normal conditions can slow sharply during worker exhaustion, even if the PHP code itself runs efficiently once a worker picks it up.

Diagnosing a worker bottleneck starts with your error logs. If 504 errors and slow response times cluster around traffic spikes rather than appearing randomly, worker exhaustion is a strong candidate. Many managed WordPress hosts expose worker usage data in their dashboards, which makes the diagnosis more straightforward than on shared hosting.

PHP Worker Limits and How to Optimize Your Site Without Upgrading

Hitting your worker limit doesn't automatically mean you need a more expensive plan. The first question to ask is how many of your requests actually need a worker at all.

A cached page skips PHP entirely. When a caching plugin or your hosting platform stores a fully rendered HTML version of a page, the web server delivers that file directly. No worker is consumed. No queue is touched. Your worker pool stays free for requests that genuinely need dynamic processing.

Full-page caching is the most direct way to reduce PHP worker demand. A well-configured caching layer serves the majority of your traffic without touching PHP, reserving workers for requests that can't be cached: logged-in users, WooCommerce cart and checkout pages, and search results that change based on the query.

Page Caching and Object Caching: Your Best Tools for Reducing PHP Worker Demand

Page caching and object caching solve different problems. Full-page caching stores the complete HTML output of a page and serves it directly, so PHP is never called for that request. Object caching, typically implemented with Redis or Memcached, stores database query results in memory. When PHP does run, it pulls those results from the cache instead of re-running expensive queries, so each worker finishes faster and frees up sooner.

Object caching doesn't eliminate the worker request the way page caching does. It speeds up the work each worker performs. Both approaches reduce pressure on your worker pool, but at different points in the request lifecycle.

CDN offloading helps too. A content delivery network serves static assets — images, scripts, stylesheets — from edge servers near the visitor. Those requests never reach your origin server or its PHP workers. Some CDNs also cache full pages at the edge, cutting origin requests further.

Plugin overhead is worth auditing. Every active plugin that runs PHP on page load adds time to each worker's request. A bloated plugin stack keeps workers occupied longer, which reduces how many requests your pool can handle per minute, even if your raw worker count stays the same.

WooCommerce stores face a specific version of this problem. Cart, checkout, and account pages can't be cached for logged-in users without serving wrong data to the wrong person. Every one of those requests ties up a worker, which is why stores typically need more workers than a comparably trafficked blog. If your store runs frequent promotions, uncached request volume during those windows can be much higher than your daily baseline suggests.

When you've applied caching and trimmed plugin overhead and your site still regularly exhausts its worker pool during normal traffic, that's the signal to look at upgrading your plan. Most managed WordPress hosts publish their worker allocations per tier, so you can compare plans on this specific metric rather than guessing.

The Bottom Line

PHP workers set the ceiling on how much concurrent traffic your WordPress site can handle. Most performance failures that feel like server outages are actually worker pool limits being reached, often for the first time during a traffic spike. Caching, CDN configuration, and plugin auditing can push that ceiling higher without touching your hosting plan. If you're not sure where your current setup stands or whether your plan fits your site's actual traffic patterns, it's worth talking through the specifics with someone who knows the infrastructure.

Related reading

FAQs

How many PHP workers does a WordPress site typically need?

The right number depends on your traffic and how much of it hits a cache. A low-traffic blog with solid caching can run well on two to four workers. High-traffic sites and stores with significant uncached request volume need more. There's no universal number — it depends on your specific traffic patterns.

What is the difference between PHP workers and server RAM?

RAM determines how much memory each worker can use while processing a request. Worker count determines how many requests can be processed at the same time. Running out of workers causes queuing. Running out of RAM causes errors or crashes within individual requests. Both matter, but they affect your site differently.

Does WooCommerce require more PHP workers than a standard WordPress blog?

Yes. WooCommerce generates more uncached requests than a standard blog because cart, checkout, and account pages can't be cached for logged-in users. Each of those requests ties up a worker for its full duration, raising the baseline worker demand compared to a content-only site.

Will adding a CDN reduce the load on my PHP workers?

A CDN serves static assets and cached pages from edge locations, so those requests never reach your origin server. Fewer requests at the origin means fewer requests competing for your worker pool. The reduction can be significant if your site serves a lot of images or other static files.

How do I find out how many PHP workers my hosting plan includes?

Check your hosting dashboard first. Many managed WordPress hosts display worker allocation as a plan metric. If it's not listed, contact your host's support team directly. Worker count is a plan-level setting, and your host can confirm the exact number assigned to your account.

See What's Included With Nova Managed Hosting

Nova runs every managed WordPress tenant in an isolated Kubernetes namespace with daily automated backups and managed core/plugin updates. If you're troubleshooting a specific issue on your own site, our team can help.