Điểm:0

Drupal di chuyển - tùy chọn "--limit" chỉ hoạt động cho lần chạy đầu tiên?

lá cờ in

Tôi có plugin nguồn tùy chỉnh (nhập từ MongoDB) và khi tôi chạy di chuyển lần đầu tiên như:

bài viết drush mim --limit=10

nó hoạt động tốt: 10 bài báo đang được nhập và quá trình dừng lại.

Nhưng nếu tôi lặp lại lệnh đó thì chỉ có 1 bài viết được nhập.

Và nếu tôi có 10 bài viết đã nhập và chạy lại với giới hạn = 20 thì 10 bài viết mới sẽ được nhập.

Và nếu tôi đặt giới hạn nhỏ hơn số lượng hàng đã nhập hiện tại thì chỉ có 1 hàng mới được nhập.

Lệnh tôi có nên chỉ định nhập luôn 10 hàng mới (nếu có, chưa xử lý)?

Bất kỳ gợi ý được chào đón!

(sử dụng drush 11.0.7 và Drupal 9.3.12) (đã chỉnh sửa)

Cập nhật:

Vì vậy, có vẻ như mã đang đếm số lượng hàng được xử lý và kiểm tra xem có đạt đến tham số giới hạn không hoạt động tốt hay không, nghĩa là, nó cũng đếm các hàng đã xử lý trước đó, điều này không nên xảy ra.

lá cờ in
Có vẻ như plugin nguồn của tôi chịu trách nhiệm bỏ qua hàng đã xử lý (được trả lời bởi @mikelutz khi bị chùng). Vì vậy, có vẻ như trong trường hợp của tôi, các hàng đã xử lý không bị bỏ qua mà được tính lại. Nhưng tôi đã không ghi đè phương thức next(). Bất kỳ ví dụ về làm thế nào để làm điều này?
lá cờ in
next() (mà tôi không ghi đè) của SourcePluginBase (mà tôi đang sử dụng làm lớp cơ sở) nên thực hiện kiểm tra xem hàng đã được xử lý hay chưa. Nhưng có vẻ như nó không thành công. Tôi đã gặp sự cố trước đây với tình trạng như vậy, khi các lần xử lý trước đó luôn được xử lý lại và sự cố đã được giải quyết bằng cách cập nhật drush.
Điểm:0
lá cờ in

Tôi đã giải quyết nó theo cách này:

Bản gốc next() của SourcePluginBase đã kiểm tra xem có cần xử lý hàng theo cách này hay không:

  if (!$row->getIdMap() || $row->needUpdate() || $this->aboveHighWater($row) || $this->rowChanged($row)) {
    $this->currentRow = $row->freezeSource();
  }

Bây giờ, trong lớp kế thừa SourcePluginBase mà tôi đã thêm vào nó, ghi đè chuẩn bịRow:

  /**
   * {@inheritdoc}
   */
  chức năng công cộng chuẩn bịRow(Row $row) {
    if (!$row->getIdMap() || $row->needsUpdate() || $this->aboveHighWater($row)) {
      trả về cha mẹ::prepareRow($row);
    }
    trả về SAI;
  }

Tôi nhận thấy rằng đối với các hàng đã nhập trước đó thì điều kiện $this->rowChanged($row) là đúng và đối với các hàng mới thực sự cần được xử lý thì $this->rowChanged($row) là đúng. Vì vậy, tôi đã loại bỏ cái đầu tiên và giữ cái thứ hai.

Tôi biết rằng đây là một cách giải quyết và có thể có một số điểm không tương thích giữa drush và drupal, nhưng đây là giải pháp tốt nhất tôi có thể làm. Nếu ai đó có giải pháp/giải thích tốt hơn, tôi sẽ rất vui khi nghe điều đó.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.