Vai al contenuto principale

Risolvere problemi di PHP Timeout su Litespeed

Alcuni script PHP devono essere eseguiti per lunghi periodi di tempo senza interruzioni. Esempi includono moduli WordPress come BackupBuddy, ImportBuddy o qualsiasi altro modulo che si basa su un processo cron incorporato in WordPress. Ogni volta che un’applicazione PHP ricostruisce gli indici MySQL, il processo può essere eseguito a lungo.

In genere, non è consigliabile consentire l’esecuzione di uno script PHP per sempre. Quindi ci sono un certo numero di funzioni (nel server Web LiteSpeed e integrate in PHP stesso) che possono impedire a un processo PHP di essere eseguito abbastanza a lungo per terminare. Potrebbe essere necessario impostare più di una delle seguenti configurazioni per garantire il corretto funzionamento dell’applicazione.

Disattivare il Broken Connection Aborting

Quando un utente chiude una connessione (chiudendo una finestra, ad esempio), LSWS interromperà l’elaborazione dello script PHP uccidendo il processo PHP. Questo per evitare di sprecare risorse di sistema e prevenire alcuni tipi di attacchi DoS.

In alcuni casi, tuttavia, è preferibile non interrompere lo script PHP, indipendentemente dal fatto che la connessione sia stata chiusa. Ad esempio, i lavori cron integrati di WordPress avviano un lavoro in background inviando una richiesta a wp-cron.php, quindi chiudendo immediatamente la connessione senza attendere la risposta. Per completare il processo cron, tuttavia, il server Web deve mantenere il motore PHP in esecuzione senza interruzioni.

Tramite Variabile di Environment

L’annullamento di una connessione interrotta può essere disattivato utilizzando la variabile di ambiente noabort a livello di richiesta. Questo può essere fatto in una regola di riscrittura o usando le direttive SetEnv / SetEnvIf. noabort è una variabile d’ambiente specifica di LiteSpeed, pertanto è necessario inserire tutte le seguenti regole

<IfModule Litespeed>...</IfModule>

Il flag [E = noabort: 1] può essere aggiunto a qualsiasi regola di riscrittura in un file .htaccess di Apache.

Rewrite Rule Esempi:

Per tutte le richieste:

RewriteEngine On

RewriteRule .* - [E=noabort:1]


Per
wp-cron.php, backupbuddy.php,e importbuddy.php:

RewriteEngine On

RewriteRule (wp-cron|backupbuddy|importbuddy).php - [E=noabort:1]


La regola RewriteRule .* - [E=noabort:1] deve essere posizionata in cima al file .htaccess

Sovrascrivere il Timeout di connessione di LiteSpeed

Se uno script non restituisce nulla per molto tempo, ciò può attivare un timeout della connessione e il server chiuderà la connessione client. Questo viene fatto per impedire agli script PHP scritti male di legare il server. Per ottenere la funzionalità desiderata dalle applicazioni Web, tuttavia, potrebbe essere necessario impedire il timeout della connessione. (Se la variabile di ambiente noabort sopra è stata impostata, lo script continuerà a essere eseguito anche se la connessione è stata interrotta. Tuttavia, l’applicazione potrebbe richiedere che la connessione rimanga aperta per la corretta funzionalità .)

Il timeout della connessione può essere prevenuto la variabile d’ambiente noconntimeout di LiteSpeed.

Rewrite Rule Esempi:

Per tutte le richieste:

RewriteEngine On

RewriteRule .* - [E=noconntimeout:1]


Per wp-cron.php,backupbuddy.php,importbuddy.php:

RewriteRule (wp-cron|backupbuddy|importbuddy).php - [E=noconntimeout:1]

Regola combinata con  la variabile “noabort”:

RewriteRule (wp-cron|backupbuddy|importbuddy).php - [E=noabort:1, E=noconntimeout:1]

Hai bisogno di supporto?

Il nostro reparto tecnico è a disposizione per sciogliere ogni dubbio o per aiutarti a gestire i servizi che hai acquistato!

bandiera Europa

bandiera Europa

Utilizziamo servizi di terze parti per analizzare il traffico sul nostro sito e restare in contatto con i nostri visitatori. Vengono quindi trattati dati di navigazione, indirizzi IP e altri dati simili per mezzo di cookie, come indicato nelle nostre policy. Accettando l’uso dei cookie ci aiuti ad offrirti un’esperienza migliore con i nostri servizi.