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.

Con Apache mod_php, l’impostazione ignore_user_abort consente a un utente di avviare un processo di lunga durata e quindi chiudere il browser o uscire dalla pagina senza interrompere il processo PHP / MySQL. Questa impostazione (e qualsiasi configurazione di Apache suEXEC) non è supportata da LSWS.

L’annullamento di una connessione interrotta puಠinvece essere disattivato a livello di server nella console WebAdmin di LSWS o utilizzando la variabile di ambiente noabort di LiteSpeed.

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. La regola di riscrittura puಠtrovarsi in un file .htaccess di Apache o in un file di configurazione a livello di vhost. Il flag di riscrittura dovrebbe di solito essere usato solo per un singolo account. Se è necessario eseguire una configurazione a livello di server che verrà applicata a tutti gli account (anche se forse solo per determinati script), è necessario utilizzare la direttiva SetEnvIf.

Rewrite Rule Esempi:

Per tutte le richieste:

RewriteEngine On

RewriteRule .* - [E=noabort:1]

For wp-cron.php, backupbuddy.php, and importbuddy.php only:

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

SetEnv/SetEnvIf Direttive di esempio:

Per tutte le richieste:

SetEnv noabort 1

Per certi URIs (i.e. wp-cron.php, backupbuddy.php, and importbuddy.php):

SetEnvIf Request_URI "(wp-cron|backupbuddy|importbuddy).php" noabort

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 aumentando l’impostazione di timeout della connessione globale (tramite la console WebAdmin) o utilizzando la variabile d’ambiente noconntimeout di LiteSpeed.

 

Tramite Variabile di Environment

Simile alla variabile d’ambiente noabort, è possibile aggiungere la variabile d’ambiente noconntimeout tramite una regola di riscrittura o usando le direttive SetEnv / SetEnvIf. (Il flag di riscrittura è preferito per il controllo di un singolo account. Le direttive SetEnv / SetEnvIf sono preferite per le regole che si applicheranno a tutti gli account.) Noconntimeout è una variabile d’ambiente specifica di LiteSpeed, quindi tutti i seguenti esempi devono essere inseriti all’interno:

<IfModule Litespeed> 

...

</IfModule>

Rewrite Rule Esempi:

 

For all requests.

RewriteEngine On

RewriteRule .* - [E=noconntimeout:1]

For wp-cron.php, backupbuddy.php, and importbuddy.php only:

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

Combined with the “noabort” environment variable:

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

SetEnvIf Request_URI "(wp-cron|backupbuddy|importbuddy).php" noconntimeout

SetEnv/SetEnvIf Direttive di esempio:

For certain URLs (i.e. wp-cron.php, backupbuddy.php, and importbuddy.php):

SetEnvIf Request_URI "(wp-cron|backupbuddy|importbuddy).php" noabort noconntimeout

 

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.