Làm cách nào để xóa hoặc xóa hàng đợi?


8

Tôi đã lên lịch một hàng đợi lớn với VBO, nhưng tôi đã thay đổi quyết định. Làm thế nào tôi có thể xóa nó? Tôi dường như không tìm thấy bất kỳ giao diện người dùng / giao diện nào để quản lý hàng đợi. Tôi có phải xóa nó trong cơ sở dữ liệu không?

Câu trả lời:


11

Không có giao diện người dùng quản lý tích hợp cho hàng đợi trong Drupal nhưng nếu bạn đang tìm kiếm một mô-đun hàng đợi .

Để xóa hàng đợi trong mã của bạn, hãy sử dụng $queue->deleteQueue();


13

drushkhông có tùy chọn để xóa hàng đợi, chỉ có drush queue-listdrush queue-run. Tuy nhiên, bạn có thể sử dụng nó để xóa các bản ghi hàng đợi tương ứng khỏi cơ sở dữ liệu:

  1. Sử dụng drush queue-listđể tìm ra tên của hàng đợi bạn muốn xóa. Trong trường hợp của tôi, nó là message_subscribe.

  2. Sử dụng một lệnh như thế này, thay thế bằng tên hàng đợi của bạn cho phù hợp:

    drush sqlq "DELETE FROM queue WHERE name='message_subscribe'"
  3. Xác nhận drush queue-listrằng hàng đợi trong câu hỏi hiện không có mục nào trong đó.

Giải pháp này khá giống với @ batigolix , chỉ là nó xóa một hàng đợi cụ thể thay vì tất cả các hàng đợi.

Cẩn thận. Giống như @batigolix đã nói, hãy cẩn thận để không mất dữ liệu! Giải pháp này có thể không dành cho môi trường sản xuất.


5

Có, bạn có thể xóa hoặc xóa hàng đợi trong cơ sở dữ liệu bằng cách làm trống bảng xếp hàng.

Drush cho phép bạn làm điều đó một cách dễ dàng với drush sqlq "TRUNCATE queue".

Cẩn thận . Tôi đã thử điều này trong một môi trường phát triển địa phương. Nó có thể không được khuyến khích trong sản xuất.

Làm trống toàn bộ queuebảng không phải lúc nào cũng là một ý tưởng hay vì nó cũng chứa các mục từ hàng đợi được tạo bởi các mô-đun khác. Vì vậy, một cách sạch hơn là loại bỏ các mục khỏi một hàng đợi cụ thể.

  • Đầu tiên, kiểm tra các hàng đợi tồn tại trong queuebảng bằng cách duyệt bảng bằng mysqlhoặc phpmyadmin. Để có được tất cả các tên hàng đợi với một số mục trong hàng đợi, bạn có thể làm SELECT DISTINCT name FROM queue.
  • Thứ hai, một khi bạn đã quyết định hàng đợi bạn muốn để trống, chỉ xóa các mục cho hàng đợi đó bằng cách sử dụng DELETE FROM queue WHERE name = :name. Thay thế `: name: bằng tên của hàng đợi bạn tìm thấy trong bước đầu tiên.

Tôi đã sử dụng điều này trong sản xuất, nhưng bạn nên cẩn thận và sử dụng phán đoán của mình. Nói tóm lại, điều tốt nhất là không xóa nội dung khỏi hàng đợi hoặc hàng đợi của mô-đun khác mà bạn không biết mục đích.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.