I PHP worker elaborano il codice PHP di un sito. Questo riguarda la creazione di pagine, l’elaborazione di operazione in background, l’interrogazione del database e così via.

Un modo per pensare ai PHP worker è come ai dipendenti di un negozio. Ogni worker può gestire una sola richiesta alla volta. Se ci sono più clienti che lavoratori, i clienti (processi) devono mettersi in fila e aspettare che il prossimo lavoratore disponibile gestisca la loro richiesta.

I PHP worker entrano in gioco quando un sito non ha o non può avere in cache la maggior parte dei suoi contenuti. Più un sito web è dinamico, più è probabile che abbia bisogno di PHP worker. I contenuti in cache non richiedono PHP worker, che sono necessari solo quando il sito deve interrogare il database per ottenere o modificare informazioni.

WordPress e i PHP Worker

Una richiesta non memorizzata nella cache su un sito WordPress di solito si sviluppa in questo modo:

  1. Un visitatore visita una pagina o esegue un’azione su una pagina (ad esempio, aggiunge qualcosa al carrello, invia un modulo, ecc.)
  2. Il server web (Nginx su Kinsta) riceve la richiesta.
  3. Nginx passa la richiesta a PHP.
  4. PHP interroga il database MySQL e ottiene le informazioni di cui ha bisogno oppure effettua gli aggiornamenti necessari.
  5. PHP utilizza quindi i file PHP del tema (e gli eventuali file dei plugin) per generare una pagina HTML.
  6. PHP restituisce la pagina HTML renderizzata al server web.
  7. La pagina viene servita al visitatore.

Nel processo descritto sopra, la fase 4 è quella che richiede più tempo e risorse (CPU e RAM). Un sito ben ottimizzato, con un codice PHP e query di database efficienti, elaborerà questo passaggio abbastanza velocemente.

D’altro canto, un codice PHP scritto male o non ottimizzato e/o con molte query sul database inefficienti impiegherà molto più tempo per superare il passaggio 4. Le richieste che richiedono più tempo per essere elaborate monopolizzano i PHP worker per un periodo di tempo più lungo.

Stimare il Numero di PHP Worker Necessari

Il numero di worker di cui un sito ha bisogno dipende da diversi fattori, come ad esempio: la dinamicità del sito, l’ottimizzazione del codice del sito (la velocità di elaborazione delle richieste) e il tipo di traffico che il sito riceve. Un sito ottimizzato gestisce le richieste in modo rapido, liberando PHP worker per la successiva richiesta in coda.

I siti dinamici come i negozi di ecommerce, i forum, i siti di apprendimento e i siti ad iscrizione hanno solitamente bisogno di un maggior numero di PHP worker rispetto ai siti statici e di tipo brochure. Inoltre, più un sito è trafficato, più saranno i PHP worker di cui avrà bisogno.

PHP Worker, CPU e RAM

Quando si aggiungono PHP worker, bisogna tenere conto delle risorse CPU e RAM. Se si aumentano i PHP worker, ma il server non ha abbastanza CPU e RAM per supportarli, si creerà un collo di bottiglia perché le richieste non saranno gestite in modo efficiente.

Da Kinsta, i container LXD personalizzati sono configurati con risorse CPU e RAM sufficienti. Inoltre, utilizzando macchine virtuali C2 ottimizzate per il calcolo e dotate delle CPU più veloci di Google Cloud, aiutiamo i PHP worker dei vostri siti a funzionare in modo più efficiente. La nostra infrastruttura scalabile garantisce che i PHP worker dei siti WordPress abbiano risorse CPU sufficienti per operare al massimo delle prestazioni.

Individuare i Problemi di Prestazioni Legati ai PHP Worker

Se si accumulano in coda troppe richieste a causa di un grande afflusso di richieste, di processi a lungo termine o di una combinazione di entrambi, il sito può avere problemi di prestazioni che possono causare errori 502 o 504.

Strumenti come Kinsta APM e il plugin Query Monitor possono aiutarvi a individuare problemi di performance e query lente. Consigliamo anche di rivolgersi a un esperto di prestazioni qualificato per individuare i problemi.

Abilitare Kinsta APM in MyKinsta.
Abilitare Kinsta APM in MyKinsta.

Il grafico del limite dei PHP worker in MyKinsta analytics mostra quante volte è stato raggiunto il numero massimo di worker allocati sul vostro sito. Questo può aiutarvi a stabilire se il sito sta consumando continuamente i PHP worker e può anche mostrarvi come l’aggiornamento a una versione più recente del motore PHP possa essere di aiuto.

Limite di PHP worker
Limite di PHP worker

La sezione di analisi della cache di MyKinsta analytics può essere utilizzata per visualizzare il totale delle richieste in cache del sito e i principali bypass della cache.

Cache - grafico dei componenti della cache
Cache – grafico dei componenti della cache
Cache - principali bypass della cache
Cache – principali bypass della cache

Ridurre e Ottimizzare l’Utilizzo dei PHP worker

Caching

Caching delle Pagine

La cache è il vostro migliore amico quando si tratta di ottimizzare il sito e ridurre il numero di PHP worker necessari. Ricordate che i PHP worker non sono necessari per i contenuti in cache, quindi mettete in cache tutto ciò che potete. DaKinsta ci occupiamo noi della cache delle pagine; tutti i siti utilizzano il modulo di cache FastCGI di Nginx per ottenere il massimo delle prestazioni.

Cache degli Oggetti

Aggiungere una cache persistente di oggetti come Redis davanti al vostro database può aumentare le prestazioni e ridurre la necessità di PHP worker. Senza la cache degli oggetti, le query del database MySQL vengono eseguite per ogni richiesta, anche quando si tratta della stessa query e degli stessi risultati.

Redis memorizza i risultati delle interrogazioni al database nella RAM, in modo che PHP possa prenderli senza dover eseguire nuovamente la query. Evitando di ripetere le stesse query sul database, i PHP worker possono risparmiare risorse e soddisfare le richieste in modo più efficiente.

Date un’occhiata ai nostri componenti aggiuntivi premium per saperne di più sulla cache di Redis.

Ottimizzazione del Codice

Assicuratevi che il codice del vostro sito sia ottimizzato in modo da essere il più efficiente possibile. Questo vale per il codice personalizzato, il codice del tema e il codice dei plugin. Se non siete sicuri, consigliamo di contattare uno sviluppatore perché riveda il codice del sito.

Codice Personalizzato

Se il vostro sito web contiene frammenti di codice personalizzato nei plugin o nel tema, assicuratevi che siano davvero necessari e ben scritti.

I Plugin

Date un’occhiata ai plugin utilizzati nel sito e assicuratevi che siano veramente necessari, che non duplichino le funzioni e che siano la soluzione migliore per le esigenze che soddisfano. Se qualche plugin non è compatibile con l’ultima versione di WordPress e di PHP, potrebbe essere il caso di prendere in considerazione altre opzioni. Se sul vostro sito ci sono dei plugin che non vengono utilizzati, è consigliabile rimuoverli.

Tema

Scegliete un tema leggero e performante. Evitate i temi che contengono funzionalità che è meglio implementare tramite plugin separati (ad es. SEO, filtri di ricerca, campi personalizzati, slider/slideshow di immagini, ecc.

Aggiornare PHP

Usate l’ultima versione di PHP per ottenere prestazioni migliori. I benchmark di PHP mostrano che ogni versione di PHP è più veloce della precedente.

Abilitare il CDN di Kinsta

L’attivazione del Kinsta CDN dà un’ulteriore spinta all’efficienza e all’ottimizzazione del sito. Kinsta CDN è il nostro CDN HTTP/3 ad alte prestazioni alimentato da Cloudflare, senza costi aggiuntivi. Se abilitato, il sito sarà in grado di servire risorse statiche da tutto il mondo.

Consultare un Esperto di Prestazioni

Se sapete come ottimizzare un sito, questo è un passaggio facoltativo. Un esperto può aiutarvi ad analizzare tutti gli aspetti del vostro sito, individuare le strozzature e implementare le soluzioni.