web-dev-qa-db-fra.com

Le script WP_Cron ne met pas à jour toutes les publications en boucle

Cela fait un mois que je rencontre un problème avec ce script http://Pastebin.com/f6LqgqQS . Ce que le script est censé faire, c'est parcourir toutes mes publications, extraire le nombre de pages du graphique de Facebook et mettre à jour la méta de la publication avec.

Le problème que j'ai depuis si longtemps est que tous mes messages n'ont pas été mis à jour . Cela fonctionnait bien lorsque j'avais 5 postes ou plus, mais une fois que j'avais atteint 60 ans et plus, les postes plus anciens n'étaient plus affectés. Cependant, ils ont mis à jour après un certain temps, mais cela peut prendre plus de 4 jours même si wp_cron est défini sur hourly (et je sais que des visiteurs sont nécessaires pour fonctionner).

Maintenant, j'ai toujours pensé que le graphique api était le coupable et que facebook limitait le nombre de demandes, mais après quelques tests avec l'exécution du script sur init, il semble que wp_cron était à l'origine du problème. J'ai même désactivé wp_cron maintenant et je l'exécute depuis Cpanel avec cronjob et jusqu'à présent, il a très bien fonctionné.

Mais le problème, c’est que je n’ai pas vraiment le moyen de confirmer que le script fonctionne correctement et si wp_cron était le coupable, après tout, comme mes recherches n'ont rien donné. Je me demande donc si quelqu'un de plus expérimenté ici pourrait jeter un coup d'œil au script et déterminer si effectivement wp_cron était le problème après tout.

1
Tony Fire

Le processus wp-cron s'exécute en tant que requête Web. Les processus PHP exécutés à partir du Web ont généralement une limite de temps d'exécution, par exemple 60 secondes environ. Les processus exécutés en tant que processus en ligne de commande (comme ceux d'un véritable cron) n'ont pas cette limite.

Le problème est donc que le script prend trop de temps à s'exécuter et est tué. Il n'y a pas de solution à ce problème, wp-cron n'est pas conçu pour créer des scripts personnalisés de longue durée.

Et si vous continuez de toucher l'API Graph de Facebook 60 fois par heure, ils vous bloqueront éventuellement. Réduisez-la, vous ne devriez obtenir cette information qu'une fois par jour au plus.

Mieux encore, écrivez le script pour qu'il ne mette à jour que les informations relatives aux publications qui ont été consultées le dernier jour, et utilise uniquement les informations mises en cache le reste du temps.

1
Otto