Come evitare il timeout in attesa dell'output da uno script CGI?

8 mar 2016, 09:30:35
Visualizzazioni: 16.3K
Voti: -1

Ricevo un errore di Apache proveniente da /wp-cron.php. Non ho modificato quel file. Come posso evitare il timeout?

2
Commenti

Devi trovare quale job cron dei tuoi plugin sta causando il timeout. Prova anche wp-cron control, è fantastico per evitare condizioni rare che portano all'esecuzione multipla di wp-cron contemporaneamente, che potrebbe essere (non posso saperlo) la causa del tuo problema.

cybmeta cybmeta
8 mar 2016 09:55:08

@cybmeta Proverò prima la mia risposta, cercherò di capire quale plugin lo causa. Ho bisogno di mantenere il mio plugin. Grazie comunque.

Jows Jows
8 mar 2016 10:06:12
Tutte le risposte alla domanda 1
5

WordPress utilizza un file chiamato wp-cron.php come cron job virtuale, o attività pianificata, per automatizzare operazioni come la pubblicazione di post programmati, il controllo degli aggiornamenti di plugin o temi, l'invio di notifiche email e altro ancora.

Di default, WordPress è configurato per chiamare wp-cron.php ogni volta che qualcuno visita il tuo sito WordPress quando è presente un'attività pianificata, per chiedere essenzialmente "è il momento di fare qualcosa?".

Su siti con poco traffico questo va benissimo, ma quando arrivano molti visitatori, controllare più volte le attività pianificate può essere molto inefficiente e portare a problemi di utilizzo delle risorse del server, oltre a rallentare il caricamento del tuo sito.

Disabilitare il comportamento predefinito di wp-cron.php

Possiamo facilmente dire a WordPress di lasciare a noi l'esecuzione di wp-cron.php modificando il file wp-config.php.

Apri il tuo file wp-config.php con l'Editor di codice di cPanel File Manager Vai in fondo alle impostazioni del database in wp-config.php, tipicamente intorno alla riga 37.

Aggiungi il codice seguente:

define('DISABLE_WP_CRON', 'true');

Configurare un cron job manuale per wp-cron.php

Non vogliamo lasciare WordPress senza alcuna capacità di automatizzare le attività che potrebbe dover eseguire. Ma almeno ora che non viene eseguito per ogni singolo visitatore, possiamo avere un controllo molto maggiore su quando queste attività vengono eseguite.

Per la maggior parte degli utenti WordPress, eseguire lo script wp-cron.php ogni 6 ore va benissimo. Sarebbero solo 4 esecuzioni in un giorno, rispetto a possibilmente centinaia o addirittura migliaia se hai avuto molto traffico sul sito quel giorno.

  1. Accedi a cPanel
  2. Nella sezione Avanzate, clicca su Cron Jobs.
  3. Seleziona "Una volta all'ora" dal menu a tendina Impostazioni comuni.
  4. Ora seleziona "Ogni 6 ore" dal menu a tendina Ora.
  5. Infine inserisci il codice per eseguire il nostro cron job e clicca su Aggiungi nuovo Cron Job.

    • cd /home/userna5/public_html; php -q wp-cron.php
    • Dove userna5 è il tuo nome utente cPanel.

    • Tieni presente che il percorso /home/userna5/public_html è valido per un dominio principale, se stai utilizzando un dominio aggiuntivo o hai WordPress installato in una sottodirectory, assicurati di aggiornare il percorso.

  6. Dovresti vedere che il tuo nuovo cron job è stato aggiunto con successo.

http://www.inmotionhosting.com/support/website/wordpress/disabling-the-wp-cronphp-in-wordpress

8 mar 2016 10:02:57
Commenti

6 ore è un intervallo molto alto, adatto solo per siti web con dinamicità molto bassa; non può essere una raccomandazione generale. Inoltre, wp-cron.php è uno script PHP non adatto ad essere eseguito tramite php-cli. Dovresti eseguirlo tramite il comando wget; altrimenti potresti incorrere in problemi. Ad esempio, eseguendolo tramite php-cli imposta il tempo massimo di esecuzione a illimitato, il che lascia la porta aperta a cron job con errori o codificati male, come sembra tu abbia, che rimangono aperti per sempre fino a quando il tuo server non crolla.

cybmeta cybmeta
8 mar 2016 10:30:58

@cybmeta Non riesco a seguirti. Cosa dovrei fare se dici che non è raccomandato?

Jows Jows
8 mar 2016 10:46:20

6 ore possono andare bene per te, ho solo detto che non può essere una raccomandazione generale. Per me è 5 minuti. Se 6 ore vanno bene per te, usale pure. Ma raccomando davvero di eseguire wp-cron.php tramite wget e non tramite il comando php-cli.

cybmeta cybmeta
8 mar 2016 11:52:28

Se il problema riguarda le voci nelle attività pianificate di wp-cron (causa di timeout), aggiungerle semplicemente altrove potrebbe non aiutare. Dobbiamo sapere cosa causa il timeout per risolvere il problema in modo affidabile.

Sas3 Sas3
2 ott 2017 05:30:52

questa risposta è completamente sbagliata. wordpress cron è problematico sui siti a basso traffico, ma dovrebbe funzionare bene sui siti ad alto traffico. La causa dei tuoi errori è molto probabilmente codice difettoso nei tuoi plugin o tema. Se hai un processo effettivo che necessita di più tempo per completarsi, un modo molto migliore è semplicemente modificare il suo timeout php nel codice. Un cron che viene eseguito ogni 6 ore è totalmente ridicolo e prima o poi romperà qualcosa.

Mark Kaplun Mark Kaplun
2 ott 2017 08:10:48