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?
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();
drush
hat keine Option zum Löschen von Warteschlangen, es gibt nur drush queue-list
und drush queue-run
. Sie können es jedoch verwenden, um die entsprechenden Warteschlangendatensätze aus der Datenbank zu löschen:
Verwenden drush queue-list
Sie diese Option , um den Namen der Warteschlange zu ermitteln, die Sie löschen möchten. In meinem Fall ist es message_subscribe
.
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'"
Bestätigen Sie damit, drush queue-list
dass 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.
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 queue
Tabelle 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.
queue
Tabelle vorhandenen Warteschlangen, indem Sie die Tabelle mit mysql
oder durchsuchen phpmyadmin
. Sie können dies tun, um alle Warteschlangennamen mit einigen Elementen in der Warteschlange abzurufen SELECT DISTINCT name FROM queue
.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.