it-swarm.com.de

Verwenden Sie die Tabellensperre mit wp_insert_post?

Ich starte jede 5. Minute einen Cron, der viele Posts einfügt. Manchmal läuft beides gleichzeitig. Um sicherzugehen, dass keine doppelten Beiträge entstehen. Ich möchte SQL-Sperrtabellen während eines Einfügens verwenden. Dies ist jedoch problematisch mit wp_insert_post(), da dabei gespeicherte SQL-Prozesse ausgeführt werden.

Ich möchte keine regulären SQLs verwenden, da ich nicht die Vorteile von allem erhalte, was wp_insert_post() tut. Und könnte auch von zukünftigen wp-Updates betroffen sein.

Gibt es eine Möglichkeit, wp_insert_post() WITH locked tables zu verwenden?

2

Erstens weist Ihre Frage darauf hin, dass Ihr Plugin manchmal länger als 5 Minuten läuft. Erhalten Sie keine Skript-Timeouts? 5 min ist eine sehr lange Laufzeit ... Wie viele Posts fügen Sie hinzu und wie lautet Ihre Serverumgebung?

Zurück zum Problem ...

Darf ich eine andere Lösung vorschlagen?

Stellen Sie einfach eine Option ein, die Sie gerade ausführen, und deaktivieren Sie sie, wenn Sie fertig sind.

Beispiel

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
  }
}

Grüße, Björn

1
Bjorn