web-dev-qa-db-fra.com

Utilisation du verrou de table avec wp_insert_post?

Je lance un cron toutes les 5 minutes qui insère beaucoup de messages. Parfois, il arrive que ces crons exécutent les deux en même temps. Pour être sûr que ne pas causer des messages en double. Je voudrais utiliser des tables de verrouillage SQL lors d'une insertion. Mais c'est problématique avec wp_insert_post() puisqu'il s'agit de faire des processus SQL stockés.

Je ne voudrais pas utiliser le code SQL régulier, car je ne tire pas les avantages de tout ce que wp_insert_post() fait. Et pourrait également être affecté par les futures mises à jour de wp.

Est-il possible d'utiliser wp_insert_post() WITH tables verrouillées?

2
Peter Westerlund

Tout d’abord, votre question indique que votre plugin dure parfois plus de 5 minutes, n’avez-vous pas des délais de script? 5 min est une exécution très longue ... Combien de publications ajoutez-vous et quel est votre environnement de serveur?

Retour au problème ...

Puis-je suggérer une autre solution?

Définissez simplement une option indiquant que vous faites quelque chose et désactivez-la lorsque vous avez terminé.

Exemple

function your_function() {

  $is_already_running = get_option('is_my_insert_post_running');

  if( ! $is_already_running) {
    update_option('is_my_insert_post_running', 1); // set is running trigger

    // do your post inserting here

    // When you're done, don't forget to deactivate
    update_option('is_my_insert_post_running', 0);

  } else {
    // wait for the next cron, i'm still working on the last one
  }
}

Cordialement, Bjorn

1
Bjorn