PHP
PHP worker
I PHP worker elaborano il codice PHP di un sito. Questo include la creazione di pagine, l’elaborazione di attività in background, l’interrogazione del database, ecc.
Un modo per pensare ai PHP worker è paragonarli ai dipendenti di un negozio. Ogni dipendente può gestire una sola richiesta alla volta. Se ci sono più clienti che dipendenti, questi clienti (processi) devono mettersi in fila e aspettare che il prossimo worker 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; sono necessari solo quando il sito deve interrogare il database per ottenere o modificare informazioni.
Per quanto riguarda le prestazioni di WordPress, un numero maggiore di PHP worker non significa automaticamente prestazioni migliori; ci sono diversi fattori da considerare:
- Cache: una cache efficace può ridurre il carico di lavoro dei PHP worker servendo i contenuti in cache invece di generarli dinamicamente per ogni richiesta. Questo può migliorare notevolmente le prestazioni, soprattutto per le risorse a cui si accede di frequente.
- Hardware: le risorse hardware disponibili sul server, come CPU, memoria (RAM) e velocità del disco, hanno un impatto diretto sulle prestazioni dei PHP worker. Risorse insufficienti possono portare a tempi di elaborazione più lenti e a prestazioni inferiori.
- Configurazione del server web: la configurazione del server web e la sua interazione con PHP possono influenzare le prestazioni del worker.
- Velocità del database: le applicazioni PHP recuperano spesso i dati dai database MySQL per rendere i contenuti dinamici. La velocità di recupero dei dati è influenzata da fattori quali l’organizzazione del database, l’ottimizzazione delle query e le prestazioni del server del database. Questo ha un impatto diretto sulla velocità di esecuzione delle applicazioni PHP.
- Versione di PHP: le versioni più recenti di PHP spesso garantiscono prestazioni migliori per i PHP worker grazie a miglioramenti delle prestazioni, correzioni di bug e aggiornamenti di sicurezza.
Noi di Kinsta teniamo molto alle prestazioni dei vostri siti. Ecco perché abbiamo implementato diverse tecnologie volte a massimizzare le prestazioni di PHP e a ridurre al minimo le richieste di PHP:
- Offriamo la cache delle pagine sia a livello di CDN che di server, con regole personalizzabili per garantire la massima efficienza della cache.
- Utilizziamo server premium su GCP (macchine virtuali C2 e C3D) dotati delle CPU più veloci di Google Cloud per aiutare i PHP worker del sito a funzionare in modo più efficiente.
- La nostra infrastruttura scalabile garantisce che i PHP worker del vostro sito WordPress abbiano risorse CPU sufficienti per operare al massimo delle prestazioni.
- Utilizziamo un’infrastruttura di rete di alto livello su Google Cloud Platform (GCP) per ridurre al minimo la latenza. Sfruttando la rete premium di GCP, riduciamo significativamente il tempo necessario ai dati per viaggiare tra i diversi componenti della nostra infrastruttura, compresi il server MySQL e i server web.
- Forniamo un server MySQL altamente ottimizzato ospitato localmente per ridurre la latenza di rete e migliorare la velocità di recupero ed elaborazione dei dati.
- Sul server MySQL abbiamo buffer InnoDB che aiutano a migliorare le prestazioni del database riducendo le operazioni di I/O su disco. I dati possono essere consultati più rapidamente dalla memoria piuttosto che dal disco, migliorando l’efficienza delle operazioni di lettura e scrittura e ottenendo migliori prestazioni complessive per il database MySQL.
- Ci assicuriamo che sia sempre disponibile l’ultima versione di PHP per incorporare qualsiasi miglioramento delle prestazioni.
PHP worker e limite di memoria PHP
Il numero di PHP workers non deve essere confuso con il limite di memoria di PHP. I PHP worker sono processi PHP individuali che gestiscono le richieste web in arrivo, mentre il limite di memoria PHP specifica la quantità massima di memoria (RAM) che un singolo script PHP può utilizzare durante l’esecuzione.
I PHP worker gestiscono la concorrenza elaborando più richieste contemporaneamente, mentre il limite di memoria PHP gestisce l’allocazione delle risorse limitando l’uso della memoria dei singoli script. In questo modo si evita che un singolo script utilizzi tutta la memoria disponibile del server.
I limiti di memoria di PHP sono importanti per gli script che richiedono molta memoria, come quelli che eseguono query di database di grandi dimensioni, gestiscono il caricamento di file di grandi dimensioni o eseguono calcoli complessi. Se riscontrate errori di limite di memoria sul vostro sito, aumentare il numero di PHP worker non risolverà il problema. Dovete invece controllare il vostro limite di memoria e, se necessario, aumentarlo o acquistare un add-on per il limite di memoria.
WordPress e PHP worker
Una richiesta non memorizzata nella cache su un sito WordPress si svolge solitamente in questo modo:
- Un visitatore visita una pagina o esegue un’azione su una pagina (ad esempio, aggiungere qualcosa al carrello, inviare un modulo, ecc.)
- Il server web (Nginx in Kinsta) riceve la richiesta.
- Nginx passa la richiesta a PHP.
- PHP interroga il database MySQL e ottiene le informazioni di cui ha bisogno o effettua gli aggiornamenti necessari.
- Il PHP utilizza quindi i file PHP del vostro tema (e gli eventuali file dei plugin) per generare una pagina HTML.
- PHP restituisce la pagina HTML renderizzata al server web.
- 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 delle query al database efficienti, riuscirà a eseguire questa fase abbastanza velocemente.
D’altro canto, un codice PHP scritto male o non ottimizzato e/o con molte query al 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à con cui le richieste possono essere processate) e il tipo di traffico che il sito riceve. Un sito ottimizzato gestisce le richieste in modo rapido, liberando PHP worker per la richiesta successiva in coda.
I siti dinamici come i negozi di e-commerce, i forum, i siti di apprendimento e i siti associativi necessitano di un maggior numero di PHP worker rispetto ai siti statici e di tipo brochure. Inoltre, più un sito è trafficato, più PHP worker avrà bisogno.
Piani Kinsta e PHP worker
La seguente tabella mostra quanti PHP worker sono inclusi in ogni piano di Kinsta:
Piano | PHP worker |
Starter | 2 PHP worker |
Pro | 2 PHP worker/sito |
Business 1 | 4 PHP worker/sito |
Business 2 | 4 PHP worker/sito |
Business 3 | 6 PHP worker/sito |
Business 4 | 6 PHP worker/sito |
Business 1 Sito singolo | 6 PHP worker |
Business 2 Sito singolo | 6 PHP worker |
Business 3 Sito singolo | 8 PHP worker |
Business 4 Sito singolo | 8 PHP worker |
Enterprise | A partire da 8 PHP worker/sito |
Piano Agency | A partire da 6 PHP worker/sito |
Offriamo anche piani personalizzati in cui è possibile indicare il numero di PHP worker di cui si ha bisogno. Per maggiori informazioni, contattate il nostro team di vendita.
PHP worker, CPU e RAM
Quando si aggiungono PHP worker, è necessario tenere conto delle risorse CPU e RAM. Se aumentate i PHP worker, ma il server ha bisogno di più CPU e RAM per supportare tali worker, si creerà un collo di bottiglia perché le richieste non saranno gestite in modo efficiente.
In Kinsta, i nostri container LXD personalizzati sono configurati con abbondanti risorse di CPU e RAM. Inoltre, utilizzando macchine virtuali C3D e C2 ottimizzate per il calcolo e dotate delle CPU più veloci di Google Cloud, aiutiamo i PHP worker del vostro sito a funzionare in modo più efficiente. La nostra infrastruttura scalabile garantisce che i PHP worker del vostro sito WordPress abbiano risorse CPU sufficienti per operare al massimo delle prestazioni.
Identificare i problemi di performance legati ai PHP worker
Se troppe richieste si accumulano nella coda 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 portare a errori 502 o 504.
L’utilizzo di strumenti come l’APM di Kinsta e il plugin Query Monitor può aiutarvi a identificare i problemi di performance e le query lente. Vi consigliamo anche di rivolgervi a un esperto di prestazioni qualificato per diagnosticare i problemi.
Limite dei PHP worker
Potete accedere al grafico del limite dei PHP worker in MyKinsta > Siti WordPress > nome del sito > Statistiche > Prestazioni > Limite PHP worker. Se un PHP worker non ha nulla da fare per 10 secondi continui, il processo di PHP worker terminerà automaticamente. Non appena sarà necessario, il processo worker verrà ricreato all’istante. Questo grafico mostra quante volte è stato raggiunto il numero massimo di worker allocati sul vostro sito.
Ad esempio, se avete un piano Business 1, questo consente un massimo di 4 processi PHP worker. Se sono in uso 3 PHP worker e viene fatta un’altra richiesta al vostro sito che richiede un PHP worker, quando il PHP worker viene creato, raggiunge il numero massimo di 4 PHP worker e viene registrato come un incidente in cui viene raggiunto il limite di PHP worker.
Questo potrebbe darvi solo un quadro parziale dell’attività dei PHP worker, poiché registra solo il numero di volte in cui viene raggiunto il limite di PHP worker e non il tempo in cui tutti i PHP worker sono stati utilizzati.
Ad esempio, se il vostro sito subisce un’impennata di traffico, tutti i PHP worker potrebbero rimanere costantemente occupati per un’ora intera senza alcun tempo di inattività e, quindi, non terminare affatto durante quell’ora. In questo caso, il limite dei PHP worker verrebbe raggiunto solo una volta e quindi potrebbe sembrare che i PHP worker non siano stati occupati durante quell’ora, mentre in realtà sono stati tutti attivi per tutto il tempo. Dopo 30 minuti, se il traffico diminuisce e un PHP worker rimane inattivo per 10 secondi, viene terminato automaticamente. Tuttavia, se il PHP worker viene richiesto di nuovo in un altro minuto, il numero massimo di PHP worker sarà nuovamente raggiunto, con conseguente registrazione di un altro limite di PHP worker.
Se state analizzando le prestazioni di un sito web e volete determinare se il vostro sito sta consumando continuamente i suoi PHP worker, potete monitorare l’attività dei PHP worker utilizzando degli strumenti in una sessione SSH. Ad esempio, il seguente comando personalizzato monitora il numero di PHP worker attivi ogni 0,3 secondi:
watch -n 0.3 "ps aux | awk '$(NF-2) ~ /php-fpm/ && $(NF-1) ~ /pool/ && $8 ~ /R/ { print $0 }' | wc -l"
Per uscire da questo comando, basta premere CMD + C o CTRL + C e rilasciare entrambi i tasti.
Analisi della cache
La sezione di analisi della cache di MyKinsta può essere utilizzata per visualizzare il totale delle richieste in cache del vostro sito e i principali bypass della cache.
Ridurre e ottimizzare l’uso dei PHP worker
La cache
La cache è la vostra migliore amica 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.
Cache delle pagine
Noi di Kinsta ci occupiamo della cache delle pagine; tutti i siti utilizzano il modulo di cache FastCGI di Nginx per ottenere prestazioni velocissime.
Cache degli oggetti
L’aggiunta di 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. Eliminando la necessità di eseguire query ripetitive al database, i PHP worker possono risparmiare risorse e soddisfare le richieste in modo più efficiente.
Date un’occhiata ai nostri add-on premium per saperne di più sull’aggiunta della cache Redis al vostro sito.
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 sapete bene come controllarlo, vi consigliamo di chiedere a uno sviluppatore di rivedere il codice del vostro 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 l’opzione migliore per le esigenze che soddisfano. Se qualche plugin non è compatibile con l’ultima versione di WordPress e PHP, potrebbe essere il momento di prendere in considerazione altre opzioni. Se sul vostro sito ci sono dei plugin che non vengono utilizzati, è consigliabile rimuoverli.
Tema
Usate 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 più veloci. I benchmark PHP mostrano che ogni versione PHP è più veloce della precedente.
Abilitare il CDN di Kinsta
L’attivazione del CDN di Kinsta offre un’ulteriore spinta all’efficienza e all’ottimizzazione del vostro sito. Il CDN di Kinsta è il nostro CDN HTTP/3 ad alte prestazioni alimentato da Cloudflare, che viene fornito senza costi aggiuntivi. Con il CDN abilitato, il vostro sito sarà in grado di servire risorse statiche da tutto il mondo.
Consultare un esperto di performance
Se avete familiarità con l’ottimizzazione del sito, questo è un passo facoltativo. Un esperto può aiutarvi ad analizzare tutti gli aspetti del vostro sito, identificare i colli di bottiglia e implementare le soluzioni.
Riavviare PHP
Se il PHP va in tilt, il nostro sistema lo registra automaticamente per consentire al nostro team di amministrazione dei sistemi (sysadmin) di verificarlo. Tuttavia, potete riavviare manualmente il PHP per ogni singolo sito web con un semplice clic da MyKinsta.
Come riavviare PHP manualmente
Per riavviare PHP sul vostro sito WordPress, basta seguire questi passaggi:
- Accedere a MyKinsta.
- Andare su Siti WordPress e selezionare il sito su cui si desidera riavviare il PHP.
- Andare alla scheda Strumenti e individuare la sezione Riavvia PHP.
- Cliccare sul pulsante Riavvia PHP.
Il riavvio di PHP richiederà circa 5-10 secondi. Riceverete una notifica in fondo allo schermo al termine dell’operazione.
Nota: dovrete anche svuotare la cache del vostro sito per vedere le modifiche.
Limiti PHP
In qualità di servizio WordPress gestito, Kinsta ha configurato le impostazioni PHP ottimali per funzionare al meglio con i siti WordPress. Se avete dei requisiti PHP specifici, contattate il nostro team di supporto per discutere delle vostre esigenze.
Kinsta offre PHP 8.1, 8.2 and 8.3. Queste sono le impostazioni predefinite di PHP:
- memory_limit = 256M
- post_max_size = 128M
- upload_max_filesize = 128M
- max_input_vars = 10000
- max_execution_time = 300
Se necessario, è possibile aumentare questi valori. Contattate il nostro team di supporto per scoprire quali sono le opzioni a vostra disposizione.
Limite di memoria PHP
Il limite di memoria PHP predefinito di Kinsta è di 256 MB, più che sufficiente per la maggior parte dei plugin e dei siti WordPress. Questo limite esiste per evitare che gli script PHP consumino troppa memoria. Se si imposta un limite troppo alto, uno script mal configurato o non funzionante può causare seri problemi consumando troppa memoria.
Se il vostro sito è configurato correttamente su Kinsta, non dovreste incorrere in un errore di limite di memoria. Se invece vedete questo errore, vi consigliamo di controllare le impostazioni di WordPress per assicurarvi che non sia stato accidentalmente impostato troppo basso.
Se volete aumentare il limite di memoria PHP di un sito, potete acquistare un add-on per il limite di memoria PHP. Questo componente aggiuntivo aumenta il limite di memoria da 256MB a 512MB al costo di $50 per sito al mese.
Per acquistare questo componente aggiuntivo, andate su MyKinsta, Siti WordPress > nome del sito > Add-on e, alla voce Memoria PHP, cliccate su Cambia.
Si aprirà una nuova finestra con le informazioni sui prezzi; cliccate su Apri la chat per avviare una conversazione con il nostro team di Account Management, che provvederà a configurare il componente aggiuntivo per voi.
Potete anche contattare il team di Account Management tramite la live chat nella Dashboard di MyKinsta o inviandoci un’e-mail a [email protected].
Se rimuovete l’add-on per il limite di memoria PHP e siete nei primi 30 giorni del vostro piano di hosting WordPress, il costo dell’add-on sarà aggiunto alla vostra prossima fattura per il periodo di tempo in cui è stato attivato. Se il vostro piano di hosting WordPress è attivo da più di 30 giorni, riceverete un credito proporzionale per i costi dell’add-on sul saldo del vostro account per i giorni rimanenti del periodo di fatturazione corrente. Il credito viene automaticamente utilizzato per compensare parte dell’importo dovuto a Kinsta nella fattura successiva. Per maggiori informazioni, consultate la nostra Garanzia di rimborso per l’hosting WordPress.
Controllare e modificare il limite di memoria PHP
Per verificare l’attuale limite di memoria PHP per WordPress, accedete alla dashboard di WordPress del vostro sito e andate su Strumenti > Site Health.
Andate alla scheda Info e cliccate sull’icona della freccia accanto alla sezione Server per espandere questa sezione e visualizzare il limite di memoria PHP.
Se il limite di memoria è inferiore a 256M, controllate il filewp-config.php per verificare se WP_MEMORY_LIMIT
è stato modificato e, se necessario, regolatelo.
Se il limite di memoria è di 256M, ma avete problemi con la memoria PHP, vi consigliamo di controllare e testare plugin e temi. Potete utilizzare un ambiente di staging per disattivare e riattivare in modo sicuro i plugin e i temi per identificare la fonte dell’utilizzo della memoria.
Se l’errore persiste e non riuscite a identificarne l’origine, potete aprire una nuova chat con il nostro team di supporto per controllare i log ed escludere eventuali problemi sul lato server.
Aggiornare PHP
Abbiamo reso l’aggiornamento della versione PHP del vostro sito il più semplice possibile in MyKinsta.
In MyKinsta, potete aggiornare la versione PHP per uno o più siti, compresi i siti di staging, simultaneamente dalla pagina dei Siti WordPress. Selezionate le caselle di controllo accanto ai siti di cui desiderate aggiornare la versione PHP, cliccate su Azioni e scegliete Cambia versione PHP.
Selezionate la versione verso cui volete eseguire l’aggiornamento e cliccate su Cambia versione PHP.
Una volta completato il processo, apparirà un messaggio di successo.
Potete anche aggiornare la versione di PHP per un singolo sito all’interno di Siti WordPress > nome del sito > Strumenti. Alla voce Motore PHP, cliccate sul menu a tendina e selezionate la versione PHP alla quale volete aggiornare il vostro sito.
Nella finestra modale/pop-up che appare, cliccate sul pulsante Cambia versione PHP per confermare la modifica.
Al termine dell’aggiornamento, il motore PHP verrà riavviato e il backend (la bacheca di WordPress) del vostro sito potrebbe essere inattivo per un paio di secondi. Il frontend del sito rimarrà attivo e i visitatori non subiranno alcun downtime.
Mentre il processo di aggiornamento è in corso, potete navigare in altre parti di MyKinsta, ma alcune azioni, come la gestione della cache, non saranno disponibili fino al riavvio del motore PHP.
Una volta completato l’aggiornamento (di solito entro 3 minuti o meno), riceverete una notifica in MyKinsta che vi avviserà del suo completamento.
Costanti PHP
Le costanti PHP memorizzano valori fissi che rimangono invariati in tutto il sito. Sono automaticamente globali, il che è ideale per i valori a cui si deve accedere in più punti.
Se utilizzate una configurazione di WordPress non standard, come Bedrock o Trellis, Kinsta potrebbe non essere in grado di localizzare la variabile DB_PASSWORD
e, quindi, non essere in grado di aggiornare la password del database quando:
- Si aggiunge un nuovo sito clonando un ambiente esistente
- Si aggiunge un ambiente di staging clonando un ambiente esistente
- Si esegue il push dello staging alla versione live
- Si esegue il ripristino di un backup
- Si cambia la password del database in MyKinsta
Per risolvere questo problema, Kinsta fornisce la costante PHP SERVER_SECRET_DB_PASSWORD
da utilizzare sui server Kinsta. Quando definite questa costante nel file config.php
, MyKinsta la utilizza per identificare la password del database del vostro sito. Potete definirla come segue:
define('DB_PASSWORD', defined('SERVER_SECRET_DB_PASSWORD') ? SERVER_SECRET_DB : 'asdijfhkjasdbfkjhbajiksd' );
Potete definire le seguenti costanti PHP da utilizzare con i server Kinsta:
SERVER_SECRET_DB_USER
SERVER_SECRET_DB_PASSWORD
SERVER_SECRET_DB_HOST
SERVER_SECRET_DB_NAME
Ad esempio, è possibile definire le costanti nel file config.php
come segue:
define('DB_NAME', defined('SERVER_SECRET_DB_NAME') ? SERVER_SECRET_DB_NAME : 'newsitetest');
define('DB_USER', defined('SERVER_SECRET_DB_USER') ? SERVER_SECRET_DB_USER : 'newsitetest');
define('DB_PASSWORD', defined('SERVER_SECRET_DB_PASSWORD') ? SERVER_SECRET_DB : 'asdijfhkjasdbfkjhbajiksd' );
define('DB_HOST', defined('SERVER_SECRET_DB_HOST') ? SERVER_SECRET_DB_HOST : 'localhost');
In alternativa, si possono definire le costanti come segue:
define('DB_NAME',SERVER_SECRET_DB_NAME);
define('DB_USER',SERVER_SECRET_DB_USER);
define('DB_PASSWORD',SERVER_SECRET_DB_PASSWORD);
define('DB_HOST',SERVER_SECRET_DB_HOST);
Moduli PHP
I seguenti moduli PHP sono installati di default sul vostro sito WordPress su Kinsta:
- bcmath
- bz2
- calendario
- Core
- ctype
- curl
- data
- dom
- exif
- FFI
- fileinfo
- filtro
- ftp
- gd
- gettext
- hash
- iconv
- igbinary
- imagick
- imap
- intl
- json
- libxml
- mbstring
- mysqli
- mysqlnd
- openssl
- pcntl
- pcre
- PDO
- pdo_mysql
- Phar
- posix
- readline
- redis
- Riflessione
- sessione
- shmop
- SimpleXML
- sapone
- socket
- sodio
- SPL
- standard
- sysvmsg
- sysvsem
- sysvshm
- tokenizer
- xml
- xmlreader
- xmlwriter
- xsl
- Zend OPcache
- zip zlib
ionCube non è installato per impostazione predefinita, ma può essere abilitato se il vostro sito utilizza PHP 8.1, 8.2 o 8.3 all’interno di MyKinsta > Siti WordPress > nome del sito > Strumenti > ionCube Loader > Abilita.
Se avete domande su un modulo PHP specifico non incluso nell’elenco precedente, contattate il team di supporto di Kinsta.