web-dev-qa-db-ja.com

キューをクリアまたは削除するにはどうすればよいですか?

VBOで大きなキューをスケジュールしましたが、気が変わりました。どうすれば削除できますか?キューを管理するためのUI /インターフェイスが見つからないようです。データベースから削除する必要がありますか?

8
giorgio79

Drupal)にはキューの組み込み管理UIはありませんが、1つを探している場合は Queue UIモジュール を確認してください。

コード内のキューを削除するには、$queue->deleteQueue();を使用します

11
bjeavons

drushにはキューをクリアするオプションがありません。drush queue-listdrush queue-runがあります。ただし、これを使用して、対応するキューレコードをデータベースから削除できます。

  1. drush queue-listを使用して、クリアするキューの名前を見つけます。私の場合はmessage_subscribeです。

  2. 次のようなコマンドを使用し、それに応じてキューの名前に置き換えます。

    drush sqlq "DELETE FROM queue WHERE name='message_subscribe'"
    
  3. drush queue-listを使用して、問題のキューにアイテムが含まれていないことを確認します。

このソリューションは @ batigolix's と非常に似ていますが、すべてのキューではなく特定のキューをクリアします。

注意してください。@batigolixが言ったように、データを失わないように注意してください!このソリューションは本番環境向けではない可能性があります…

13
tanius

はい、キューテーブルを空にすることで、データベース内のキューを削除またはクリアできます。

Drushでは、drush sqlq "TRUNCATE queue"を使用して簡単にこれを行うことができます。

注意。これをローカルの開発環境で試しました。本番環境では推奨されない場合があります。

queueテーブル全体を空にすることは、他のモジュールによって作成されたキューからのアイテムも含まれているため、常に良い考えとは限りません。したがって、より明確な方法は、特定のキューからアイテムを削除することです。

  • まず、queueまたはmysqlを使用してテーブルを参照し、phpmyadminテーブルに存在するキューを調べます。キューにいくつかの項目があるすべてのキュー名を取得するには、SELECT DISTINCT name FROM queueを実行できます。
  • 次に、空にするキューを決定したら、DELETE FROM queue WHERE name = :nameを使用して、そのキューのアイテムのみを削除します。 `:name:を最初のステップで見つけたキューの名前に置き換えます。

私はこれをプロダクションで使用しましたが、注意して判断してください。簡単に言うと、他のモジュールのキューまたは目的がわからないキューからデータを削除しないことが最善です。

5
batigolix