Oggi guarderemo le funzioni di WP-Cron, uno dei trucchi meno conosciuti che puoi usare per divertirti! Lo scopo principale è di impostare la pianificazione o altre attività sensibili al tempo. Esamineremo alcuni trucchi per utilizzarlo e identificheremo anche alcuni potenziali problemi con esso e su come aggirarli.
WordPress è un potente software. Tuttavia, la sua semplicità può spesso dare un'impressione errata agli utenti non tecnici dei suoi meccanismi interni. Questo potrebbe essere servito nell'interesse di WordPress, in quanto qualcosa di semplice e facile da usare è generalmente adottato dalle masse. Tuttavia, è importante ricordare che dietro le quinte c'è un potente software in grado di fare molto di più del semplice blogging.
Una delle funzionalità di WordPress di cui si scrive meno è WP-Cron (controlla qui la pagina del codice su WP-Cron). Ora quelli di voi che hanno avuto a che fare con il generale cron su un server Linux conoscere la potenza di questa funzione.
Cron è un comando UNIX per la pianificazione dei lavori da eseguire in futuro. UN cron viene normalmente utilizzato per pianificare un lavoro che viene eseguito periodicamente. Ad esempio, è possibile utilizzare una funzione cron per inviare un avviso ogni mattina. È anche un demone processo, nel senso che viene eseguito continuamente, in attesa che si verifichino eventi specifici.
Poiché WordPress è installato su così tante diverse configurazioni, per far funzionare le cose correttamente, gli sviluppatori di WordPress hanno implementato uno pseudo cron che include il Funzioni di WP-Cron che aiuta a eseguire lavori di pianificazione come:
A differenza dei normali lavori cron, che vengono eseguiti in un momento specifico in base alle impostazioni del server, la funzione WP-Cron viene eseguita ogni volta che qualcuno visita il sito Web alimentato da WordPress. Questo rende un sito WordPress eseguito correttamente su diversi tipi di configurazioni del server perché elimina molti requisiti specifici del server. Ad ogni caricamento della pagina, WordPress verifica se è necessario eseguire WP-Cron. Se c'è una necessità, allora prova a fare una richiesta su HTTP al wp-cron.php file.
La ragione per chiamare wp-cron.php è perché alcuni lavori potrebbero richiedere più tempo e l'utente che richiede la pagina WordPress non può essere fatto attendere. Chiamare il wp-cron.php aiuta a mantenere la funzione WP-Cron in esecuzione come processo separato in background senza ritardare il tempo di caricamento della pagina per l'utente. Una volta avviata la funzione WP-Cron, continua a essere eseguita fino a quando tutti i lavori richiesti sono completati o finché non raggiunge un tempo di esecuzione come impostato nella configurazione del server.
Sulla base della configurazione del tuo host web, WP-Cron può non riuscire a completare i suoi lavori o potrebbe non funzionare affatto. I siti Web ad alto traffico affrontano un'altra serie di problemi come i processi multipli di WP-Cron in esecuzione in loop. La maggior parte delle persone incolpa WordPress per questo, ma non è necessariamente un problema con WordPress. Ogni situazione è diversa e sulla base di essa possiamo modificare WordPress per funzionare nel miglior modo possibile. Di seguito, troverai alcuni dei problemi comuni che le persone affrontano e come risolverli.
Se sei un amministratore di server o gestisci il tuo server con un firewall, potresti aver ricevuto e-mail dal tuo firewall su un file "wp-cron.php" in esecuzione per un lungo periodo di tempo. Ciò accade quando il tempo di esecuzione dello script impostato sul server è superiore a 60 secondi. Poiché il processo non viene terminato e poiché vengono avviati nuovi processi, sul server vengono eseguite più istanze del processo WP-Cron.
Ciò non accade su un sito web a traffico limitato, ma se il tuo sito Web alimentato da WordPress ha utenti simultanei in un dato momento e il tempo massimo di esecuzione dello script è impostato su un valore elevato, ci saranno molte istanze di questa funzione WP-Cron in esecuzione. Fino a una versione recente di WordPress, c'era sempre un problema di più processi cron che si ripetevano sugli stessi eventi.
NOTA: WordPress 3.3 ci offre un ancoraggio di cron migliore. Questo articolo è stato scritto proprio mentre veniva rilasciato WordPress 3.3, che presenta un migliore cron locking ed evita più processi WP-Cron che si ripetono sugli stessi eventi.
Un altro problema ampiamente riportato con alcuni provider di hosting e alcuni siti Web a traffico molto basso sono i post programmati che non vengono pubblicati. Poiché la funzione WP-Cron viene eseguita solo quando è presente una richiesta di pagina, se non ci sono richieste, i lavori pianificati non vengono eseguiti.
Nota: Non c'è un problema con WordPress. Anche dalla versione 3.x questo è stato riportato molto meno. Tuttavia ci sono molti plugin per risolvere questo problema.
Di nuovo questo è un problema con l'installazione del server. A causa di impostazioni errate, i blocchi del firewall impediscono agli script di chiamare se stessi, pertanto la funzione WP-Cron non funziona.
Per evitare più istanze di WP-Cron in esecuzione sul tuo server per un singolo sito web, ho provato a utilizzare il modo predefinito di impostare i lavori cron su un server Linux (Apache con cPanel come pannello di controllo). Il vantaggio di questo metodo è:
Prima di entrare in questo, assicurati che il tuo host web ti permetta di configurare i lavori cron di Linux predefiniti. Il modo in cui questo è impostato sarebbe diverso in base al pannello di controllo offerto dal tuo host, ma in questo articolo fornirò una guida per configurare un cron job usando il pannello di controllo cPanel che è comune sui server Linux al giorno d'oggi.
I passi che ho seguito sono stati:
Sì, è così semplice. Solo due passaggi per rendere le cose più fluide.
NOTA: Prima di seguire questo metodo, tieni presente che la disattivazione di WP-Cron interna può anche comportare il mancato funzionamento del sito Web in base alla configurazione o ai plug-in utilizzati.
Apri il file wp-config.php in NotePad o l'editor di tua scelta e aggiungi le due righe sottostanti in alto.
// Disabilita la funzione Wp-Cron interna define ('DISABLE_WP_CRON', true);
Ciò interromperà l'esecuzione della funzione WP-Cron interna e non chiamerà il file wp-cron.php.
Se ti è permesso di configurare i lavori cron, dovresti configurare un cron come di seguito:
wget http://www.server.com/wp-cron.php?doing_wp_cron=1> / dev / null 2> & 1
Di solito il link è http://yourwebsite.com/cpanel o http://yourwebsite.com:2082. Dopo aver inserito l'ID utente e la password e aver inserito il pannello di controllo, scorrere fino alla sezione "Avanzate".
Fare clic sull'icona "Cron Jobs" nella sezione avanzata.
Nella nuova pagina troverai una sezione "Aggiungi nuovo cron job" come quella nell'immagine sopra. Dal menu a discesa Impostazioni comuni, selezionare "Ogni 5 minuti ...". Una volta selezionato, il resto dei campi verrà automaticamente riempito con le informazioni necessarie. Nel prossimo passaggio spiegherò la mia intenzione di impostare un intervallo di 5 minuti per eseguire la sceneggiatura.
Nel campo di comando, aggiungi la riga sottostante. Ricorda di aggiungere l'indirizzo del sito web corretto.
wget http://www.yourwebsite.com/wp-cron.php?doing_wp_cron=1> / dev / null 2> & 1
Infine, fai clic sul pulsante "Aggiungi nuovo cron job".
D'ora in poi il server farà una richiesta per il file wp-cron.php ogni 5 minuti. Ora il motivo per cui ho impostato questo come 5 minuti, è perché per lo più ho impostato il tempo di esecuzione dello script su 4 minuti invece che su 60 secondi. Questo è fatto per essere in grado di caricare file di immagini di grandi dimensioni, processi di backup, ecc. Tuttavia è possibile anche modificare le impostazioni e scegliere altre opzioni per eseguire il cron ogni 1 minuto.
NOTA: Questo funziona bene per i siti Web di WordPress generici. Per coloro che utilizzano una rete WordPress, potrebbero esserci altre cose necessarie, quindi non utilizzare i passaggi precedenti se si esegue la versione multi-sito di WordPress.
Se hai problemi o hai altre idee non esitare a condividere i tuoi commenti qui sotto!