¿Se puede activar cron llamando a wp-cron.php desde la línea de comandos en lugar de usar wget?

26 ago 2015, 10:16:57
Vistas: 15.6K
Votos: 9

¿Se puede activar wp-cron.php usando por ejemplo $ php /ruta/hacia/wordpress/wp-cron.php en lugar de pasar por el método wget usando por ejemplo wget -q -O - http://ejemplo.com/wp-cron.php>/dev/null 2>&1?

2
Comentarios

La pregunta es: ¿Por qué querrías/necesitarías hacerlo de esa manera?

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

@leymannx por muchas razones, quizá tu sistema no tenga wget? Las tareas tipo Cron no deberían requerir capa web de todos modos y deberías poder ejecutar cron incluso sin que todo el sitio esté funcionando.

Tuomas Valtonen Tuomas Valtonen
27 sept 2019 14:01:02
Todas las respuestas a la pregunta 2
6
10

Al revisar la documentación dentro del archivo wp-cron.php parece que es absolutamente posible simplemente llamar $ php wp-cron.php:

/**
 * Un pseudo-daemon CRON para programar tareas de WordPress
 *
 * WP Cron se activa cuando el sitio recibe una visita. En el escenario
 * donde un sitio puede no recibir suficientes visitas para ejecutar tareas programadas
 * en un tiempo oportuno, este archivo puede ser llamado directamente o a través de un
 * daemon CRON del servidor por X número de veces.
 *
 * Definir DISABLE_WP_CRON como true y llamar este archivo directamente son
 * mutuamente excluyentes y lo último no depende de lo primero para funcionar.
 *
 * La solicitud HTTP a este archivo no ralentizará al visitante que acceda
 * cuando el trabajo cron necesite ejecutarse.
 *
 * @package WordPress
 */

Otra opción que puedes hacer en la línea de comandos es usar wp-cli para eso.

$ cd /ruta/hacia/wordpress
$ wp cron event run --due-now

Para forzar la ejecución de un único cron independientemente de su programación establecida, ejecuta:

$ wp cron event run my_custom_cron_event

O como un comando de una línea para usar en un crontab y ejecutarse cada hora completa + 15 minutos (2:15 pm, 3:15pm, 4:15pm etc.):

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

¿Hay algún beneficio al usar curl versus la herramienta CLI wp?

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

@BarryChapman – Básicamente, curl es solo otra solicitud de página. Por lo que puede ralentizar un poco el sitio cuando se ejecuta el cron.

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

@BarryChapman Supongo que cualquier código que dependa de $_SERVER u otras variables de sesión no funcionará bien cuando se llame desde la línea de comandos. Aparte de eso, deberías estar bien

alexg alexg
4 mar 2021 19:29:32

Vale la pena mencionar que wp-cli ejecuta cron a través de HTTP. Definitivamente no es lo mismo que llamar a wp-cron desde CLI PHP, porque por ejemplo max_execution_time puede afectar las ejecuciones de cron. Si tienes problemas con tareas cron que se interrumpen, recomendaría llamar directamente a wp-cron.php, sin involucrar wp-cli.

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

@GaborGarami ¿wp-cli hace una solicitud http desde la línea de comandos??

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

Según mis pruebas, sí.

Gabor Garami Gabor Garami
13 oct 2023 13:45:06
Mostrar los 1 comentarios restantes
2

Sí, es posible activar ejecuciones cron simplemente con $ php /ruta/a/wordpress/wp-cron.php.

Alternativamente puedes usar curl:

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

Y puedes agregar la siguiente línea a tu wp-config.php para desactivar la ejecución de crons mediante peticiones HTTP:

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

Si estás usando curl, sigue siendo una solicitud HTTP, así que probablemente no sea una buena idea deshabilitar DISABLE_WP_CRON?

Bananaapple Bananaapple
10 jul 2020 11:20:45

@Bananaapple – Al llamar directamente a wp-cron.php evitas eso. Pero al mismo tiempo DISABLE_WP_CRON impide que el cron se active cuando los visitantes navegan por cualquier página de tu sitio. Consulta https://kinsta.com/knowledgebase/disable-wp-cron/ y en los comentarios del archivo en mi respuesta anterior Definir DISABLE_WP_CRON como verdadero y llamar a este archivo directamente son mutuamente excluyentes y lo segundo no depende de lo primero para funcionar.

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