web-dev-qa-db-fra.com

Meilleure gestion de l'abus de charge du serveur WP-CRON

Il y a plusieursrapportssurcommentwp-cronestaloinde idéal solution car elle est exécutée chaque fois qu'une page est chargée, ce qui est inutile dans la plupart des scénarios (un scénario dans lequel cela serait nécessaire est l'utilisation de messages programmés _)

Le conseil habituel est d’ajouter define('DISABLE_WP_CRON', true); à wp-config.php, puis de planifier un véritable travail cron (si vous avez suffisamment d’accès administrateur pour le faire).

Mais à partir de WP 3.3, il existe WP_CRON_LOCK_TIMEOUT, qui "définit une période au cours de laquelle un seul cronjob sera déclenché".

Si vous exécutez des centaines d'installations WP, vous devez créer (et supprimer, lorsque cette installation wp est supprimée) un grand nombre de tâches cron, qui peuvent devenir une gêne. Par conséquent, il semble que la meilleure solution de nos jours est de définir define('WP_CRON_LOCK_TIMEOUT', 900);(si vous voulez que wp-cron s'exécute toutes les 900 secondes).

La question est: quelqu'un a-t-il déjà utilisé WP_CRON_LOCK_TIMEOUT à cette fin? Est-ce que c'est son usage prévu?

5
Gaia

Ceci est l'utilisation prévue de la constante WP_CRON_LOCK_TIMEOUT.

Lorsque WordPress est chargé, il vérifie si un travail cron est en cours d'exécution (si ce dernier est verrouillé). Si cron n'est pas verrouillé, il essaiera de créer un verrou. Si le délai de verrouillage n'est pas atteint, aucun verrou ne peut être acquis et cron n'est pas exécuté.

Si aucun travail cron n'est en cours d'exécution et que le délai d'attente est écoulé (ce qui signifie qu'un verrou peut être créé), cron est exécuté.

7
EAMann