Wie lösche oder lösche ich eine Warteschlange?

8

Ich habe eine große Warteschlange bei VBO geplant, aber ich habe es mir anders überlegt. Wie kann ich es löschen? Ich finde anscheinend keine Benutzeroberfläche / Schnittstelle zum Verwalten von Warteschlangen. Muss ich es in der Datenbank löschen?

giorgio79
quelle

Antworten:

11

In Drupal gibt es keine integrierte Verwaltungsoberfläche für Warteschlangen. Wenn Sie jedoch eine suchen, sehen Sie sich das Modul für die Warteschlangenoberfläche an .

Um eine Warteschlange in Ihrem Code zu löschen, verwenden Sie $queue->deleteQueue();

bjeavons
quelle
13

drushhat keine Option zum Löschen von Warteschlangen, es gibt nur drush queue-listund drush queue-run. Sie können es jedoch verwenden, um die entsprechenden Warteschlangendatensätze aus der Datenbank zu löschen:

  1. Verwenden drush queue-listSie diese Option , um den Namen der Warteschlange zu ermitteln, die Sie löschen möchten. In meinem Fall ist es message_subscribe.

  2. Verwenden Sie einen Befehl wie diesen und ersetzen Sie ihn entsprechend durch den Namen Ihrer Warteschlange:

    drush sqlq "DELETE FROM queue WHERE name='message_subscribe'"
  3. Bestätigen Sie damit, drush queue-listdass die betreffende Warteschlange jetzt keine Elemente mehr enthält.

Diese Lösung ist der von @ batigolix ziemlich ähnlich , nur dass sie eine bestimmte Warteschlange anstelle aller Warteschlangen löscht.

Vorsichtig. Wie @batigolix sagte, achten Sie darauf, keine Daten zu verlieren! Diese Lösung ist möglicherweise nicht für eine Produktionsumgebung geeignet.

Tanius
quelle
5

Ja, Sie können eine Warteschlange in der Datenbank löschen oder löschen, indem Sie die Warteschlangentabelle leeren.

Mit Drush können Sie das ganz einfach tun drush sqlq "TRUNCATE queue".

Vorsicht . Ich habe dies in einer lokalen Entwicklungsumgebung versucht. Es kann in der Produktion nicht empfohlen werden.

Das Leeren der gesamten queueTabelle ist nicht immer eine gute Idee, da sie auch Elemente aus Warteschlangen enthält, die von anderen Modulen erstellt wurden. Eine sauberere Möglichkeit besteht also darin, Elemente aus einer bestimmten Warteschlange zu entfernen.

  • Überprüfen Sie zunächst die in der queueTabelle vorhandenen Warteschlangen, indem Sie die Tabelle mit mysqloder durchsuchen phpmyadmin. Sie können dies tun, um alle Warteschlangennamen mit einigen Elementen in der Warteschlange abzurufen SELECT DISTINCT name FROM queue.
  • Zweitens: Wenn Sie sich für die Warteschlange entschieden haben, die Sie leeren möchten, entfernen Sie Elemente nur für diese Warteschlange mit DELETE FROM queue WHERE name = :name. Ersetzen Sie `: name: durch den Namen der Warteschlange, die Sie im ersten Schritt gefunden haben.

Ich habe dies in der Produktion verwendet, aber Sie sollten vorsichtig sein und Ihr Urteilsvermögen einsetzen. Kurz gesagt, das Beste ist, keine Inhalte aus der Warteschlange oder den Warteschlangen anderer Module zu löschen, deren Zweck Sie nicht kennen.

Batigolix
quelle