php – Ejecutar WP Cron en varios sitios de la manera correcta

Pregunta:

Tengo WordPress Multisite con varios sitios. Configuré DISABLE_WP_CRON en true en mi wp-config.php .

Si configuramos la tarea cron con wget o curl, tenemos una regla de 30 segundos para ejecutar el script PHP. Es tan pequeño para enviar toneladas de notificaciones por correo electrónico y hacer otras cosas (tal vez la conexión del servidor SMTP remoto sea lenta, tal vez sea una gran cantidad de notificaciones por correo electrónico de bbPress o cualquier otra cosa).

¿Quizás podamos usar algo como esto?

php -q wp-cron.php

Pero solo se ejecuta cron en un sitio en Multisite (cada sitio tiene sus propias tareas cron en diferentes tablas de MySQL).

PD En el foro wpmudev.org encontré una extraña "solución" que también usa Curl.

Otra CLI de PS WP tiene increíbles comandos wp cron , pero solo permite ejecutar tareas cron manualmente (sí, podemos usar --url attr). Por ejemplo:

wp cron event list --url=multisite.com
wp cron event list --url=subdomain.multisite.com

Respuesta:

Creo que la mejor manera es usar WP-CLI, pero necesitarías escribir un script bash para hacer esto. Aquí hay uno que debería hacerlo por ti:

WP_PATH="/path/to/wp"
for SITE_URL in = $(wp site list --fields=domain,path,archived,deleted --format=csv --path="$WP_PATH" | grep ",0,0$" | awk -F ',' '{print $1 $2}')
do
    for EVENT_HOOK in $(wp cron event list --format=csv --fields=hook,next_run_relative --url="$SITE_URL" --path="$WP_PATH" | grep \"now\"$ | awk -F ',' '{print $1}')
    do
        wp cron event run "$EVENT_HOOK" --url="$SITE_URL" --path="$WP_PATH"
    done
done

Luego, necesitaría agregar este script a crontab y ejecutarlo tal vez cada minuto si lo desea

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım