Attivare cron chiamando wp-cron.php dalla riga di comando invece che con wget?

26 ago 2015, 10:16:57
Visualizzazioni: 15.6K
Voti: 9

È possibile attivare wp-cron.php utilizzando ad esempio $ php /percorso/verso/wordpress/wp-cron.php invece di passare attraverso il metodo wget usando ad esempio wget -q -O - http://esempio.com/wp-cron.php>/dev/null 2>&1?

2
Commenti

Domanda è: Perché vorresti/avresti bisogno di farlo in quel modo?

norman.lol norman.lol
25 mar 2019 22:22:04

@leymannx per molte ragioni, forse il tuo sistema non ha wget? I task di tipo Cron non dovrebbero richiedere il livello web comunque e dovresti essere in grado di eseguire cron anche senza che l'intero sito sia attivo.

Tuomas Valtonen Tuomas Valtonen
27 set 2019 14:01:02
Tutte le risposte alla domanda 2
6
10

Esaminando la documentazione all'interno del file wp-cron.php sembra assolutamente possibile chiamarlo semplicemente con $ php wp-cron.php:

/**
 * Uno pseudo-daemon CRON per la pianificazione delle attività di WordPress
 *
 * WP Cron viene attivato quando il sito riceve una visita. Nello scenario
 * in cui un sito potrebbe non ricevere abbastanza visite per eseguire le attività pianificate
 * in modo tempestivo, questo file può essere chiamato direttamente o tramite un server
 * CRON daemon per X numero di volte.
 *
 * Definire DISABLE_WP_CRON come true e chiamare questo file direttamente sono
 * azioni mutualmente esclusive e la seconda non si basa sulla prima per funzionare.
 *
 * La richiesta HTTP a questo file non rallenterà il visitatore che capita
 * di visitare quando il job cron deve essere eseguito.
 *
 * @package WordPress
 */

Un'altra cosa che puoi fare dalla riga di comando è utilizzare wp-cli per questo scopo.

$ cd /percorso/di/wordpress
$ wp cron event run --due-now

Per forzare l'esecuzione di un singolo cron indipendentemente dalla sua pianificazione impostata, esegui:

$ wp cron event run mio_evento_cron_personalizzato

Oppure come comando unico da usare in un crontab per l'esecuzione ogni ora piena + 15 minuti (14:15, 15:15, 16:15 ecc.):

15 * * * * cd /percorso/di/wordpress && wp cron event run --due-now > /dev/null 2>&1
25 mar 2019 22:21:01
Commenti

C'è un vantaggio nell'usare curl rispetto allo strumento CLI wp?

Barry Chapman Barry Chapman
26 gen 2020 08:06:12

@BarryChapman – Curl è fondamentalmente solo un'altra richiesta di pagina. Quindi potrebbe potenzialmente rallentare un po' il sito quando il cron viene eseguito.

norman.lol norman.lol
26 gen 2020 17:56:34

@BarryChapman Immagino che qualsiasi codice che dipende da $_SERVER o altre variabili di sessione non gradirà essere chiamato dalla riga di comando. A parte questo, dovresti essere a posto

alexg alexg
4 mar 2021 19:29:32

Vale la pena menzionare che wp-cli esegue il cron via HTTP. Non è assolutamente lo stesso che chiamare wp-cron da CLI PHP, perché ad esempio max_execution_time può influenzare le esecuzioni del cron. Se hai problemi con i task cron che scadono, consiglio di chiamare wp-cron.php direttamente, senza coinvolgere wp-cli.

Gabor Garami Gabor Garami
15 mar 2023 11:40:05

@GaborGarami wp-cli fa una richiesta http dalla linea di comando??

norman.lol norman.lol
16 mar 2023 12:42:32

In base ai miei test, sì.

Gabor Garami Gabor Garami
13 ott 2023 13:45:06
Mostra i restanti 1 commenti
2

Sì, è possibile attivare l'esecuzione dei cron semplicemente con $ php /percorso/di/wordpress/wp-cron.php.

In alternativa puoi usare curl:

*/10 * * * * curl http://esempio.com/wp-cron.php > /dev/null 2>&1

E puoi aggiungere la seguente riga al tuo wp-config.php per disabilitare l'esecuzione dei cron tramite richieste HTTP:

define('DISABLE_WP_CRON', true);
26 ago 2015 10:32:34
Commenti

Se stai utilizzando curl si tratta pur sempre di una richiesta HTTP, quindi probabilmente non è una buona idea disabilitare DISABLE_WP_CRON?

Bananaapple Bananaapple
10 lug 2020 11:20:45

@Bananaapple - Chiamando direttamente wp-cron.php si aggira questo problema. Ma allo stesso tempo DISABLE_WP_CRON impedisce che il cron venga attivato dai visitatori che navigano su qualsiasi pagina del tuo sito. Vedi https://kinsta.com/knowledgebase/disable-wp-cron/ e nei commenti del file nella mia risposta sopra Definire DISABLE_WP_CRON come true e chiamare questo file direttamente sono mutualmente esclusivi e quest'ultimo non si basa sul primo per funzionare.

norman.lol norman.lol
10 lug 2020 11:45:04