Điểm:1

Làm thế nào để biết nếu một quá trình hàng loạt vẫn đang chạy?

lá cờ lb

Tôi có một biểu mẫu có 5 nút và mỗi nút chạy một lô khác nhau, một số quy trình xử lý hàng loạt mất vài phút. Tôi muốn chặn nút nếu các quy trình hàng loạt đang chạy, bởi vì quản trị viên người dùng khác có thể truy cập vào cùng một biểu mẫu và cố chạy lô hiện đang chạy cho người dùng khác.

Làm cách nào tôi có thể biết quy trình hàng loạt nào đang chạy? tôi thử sử dụng batch_get(); nhưng mỗi lần hàm này trả về một mảng trống.

Điểm:1
lá cờ cn

Theo API, sau khi bạn xác định một đợt, bạn cung cấp chức năng gọi lại sẽ được thực thi khi đợt kết thúc, vì vậy cho đến khi lệnh gọi lại này được gọi, đợt vẫn tiếp tục.

Vì vậy, lý tưởng nhất là định nghĩa lô của bạn sẽ thực hiện một hành động ban đầu như đặt trạng thái DB mà bạn có thể truy vấn và nếu nó bị chặn, bạn không cho phép nút và sau khi lệnh gọi lại hoàn tất của bạn được thực thi, bạn lại mở khóa nút.

Mauricio avatar
lá cờ lb
Cảm ơn @jbarrio tôi hiện đang làm điều này như bạn đề xuất, tôi sử dụng `code \Drupal::state()->set('batch_import_'. $sourceId, serialize($result_source));` để đặt biến "đang chạy" để biết điều đó. Nhưng đợt này là đợt lũy tiến, vì vậy nếu người dùng đóng tab này thì đợt này sẽ không bao giờ kết thúc và không bao giờ rơi vào lệnh gọi lại đã hoàn thành.
jbarrio avatar
lá cờ cn
Vâng, nói thật là tôi đã trả lời chính xác những gì bạn hỏi. Những gì bạn đang đề cập bây giờ là một yêu cầu khác nhau. Nhưng trong kịch bản mới của bạn, nếu người dùng đóng tab và lô bị kẹt, bạn có thể chạy cron để xóa các lô bị kẹt khỏi bảng và đặt lại trạng thái batch_import_ID, để nút có thể hiển thị lại.

Đă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.