1000 FAQ, 500 tutorial e video esplicativi. Qui ci sono delle soluzioni!
Comprendere le durate delle connessioni a MySQL / MariaDB
Questa guida tecnica dettaglia i limiti delle risorse sui hosting Web Infomaniak; è essenziale distinguere il tempo reale (orologio) dal tempo di calcolo (processore) per comprendere l'origine delle interruzioni degli script.
1. Tempo di connessione MySQL (I/O)
Limite: 30 secondi reali
Questo limite corrisponde al tempo assoluto trascorso "orologio alla mano". Si riferisce alla comunicazione tra PHP e il server del database (MySQL/MariaDB).
Non appena una connessione è aperta, il server del database alloca 30 secondi al massimo per ricevere la richiesta, eseguirla e restituire i risultati. Se questo tempo viene superato (spesso a causa di una richiesta SQL non ottimizzata), il server MySQL interrompe bruscamente la connessione. Questo genera generalmente l'errore MySQL server has gone away.
2. Tempo di elaborazione PHP (CPU)
Limite: 10 secondi CPU
Questo limite riguarda esclusivamente la potenza di calcolo consumata dal server Web per eseguire il codice PHP.
È fondamentale notare che il tempo di attesa non conta. Quando PHP attende una risposta dal database, è in pausa e non consuma quasi tempo CPU. Di conseguenza, uno script verrà interrotto dal server Web solo se effettua calcoli intensivi (cicli complessi, crittografia, elaborazione di file) per più di 10 secondi cumulativi.
Interazione dei due limiti
Per garantire la stabilità dell'applicazione, ogni operazione deve rispettare simultaneamente queste due distinte limitazioni:
- L'applicazione dispone di 30 secondi di tempo totale per interagire con il database (latenza di rete + esecuzione SQL).
- L'applicazione dispone di 10 secondi di tempo di calcolo puro per elaborare i dati ricevuti.
Esempio di funzionamento valido: Uno script che attende 25 secondi una risposta complessa da MySQL (I/O) e poi elabora il risultato per 2 secondi (CPU) funzionerà perfettamente, poiché non ha superato nessuno dei due limiti individuali, anche se il tempo totale è di 27 secondi.