6 Hiện thực
6.6.1.1 Quản lý tiến trình của Robot
• Chạy Bot: Khi nhận được lênh kích hoạt từ người dùng thông qua Bot Controller, Robot sẽ tiến hành thực hiện tuần tự các công việc sau:
- Cập nhật trạng thái của Robot thành đang hoạt động (Started).
- Kiểm tra xem Robot có đang được chạy hay không: Mỗi Robot sẽ được chạy trên một process riêng biệt. Robot sẽ kiểm tra Process ID của Robot muốn có đang tồn tại trong danh sách Process của Hệ điều hành hay không.
o Nếu không, Robot sẽ thực hiện một lênh khởi tạo một process mới để chạy Bot được yêu cầu.
• Dừng Bot:
- Trong mỗi vòng lặp của quá trình hoạt động, Bot kiểm tra trạng thái của mình. - Nếu trạng thái là “Started”, Bot sẽ tiếp tục chạy.
- Nếu trạng thái không là “Started”, Bot sẽ dừng lại.
Việc tạo process mới để chạy và quản lý Robot bằng Process ID đã giúp khắc phục đáng kể nhược điểm khách quan của ngôn ngữ PHP chính là time limit, (trong PHP, khi một script được chạy nó luôn có một thời gian giới hạn gọi là time limit, sau thời gian này script sẽ tự động dừng lại và ngừng chạy). Để khắc phục tình trạng này, có 3 cách phổ biến nhất là:
• Cách 1:
- Giải pháp: Đặt lại thời gian chạy của PHP script: set_time_limit(0); - Ưu điểm: Sau khi được đặt lại thời gian, script có thể chạy mãi mãi,
- Nhược điểm: Khó quản lý tình trạng hoạt động của script. Script mặc dù có thể chạy mãi mãi, nhưng vẫn có thể dừng lại nếu gặp lỗi phát sinh, sự cố từ server hay các nguyên nhân bất khả kháng.
• Cách 2:
- Giái pháp: Dùng cron job của linux hay schedule tasks của windows để khắc phục tình trạng timeout của script.
- Ưu điểm: Đảm bảo script luôn luôn được chạy sau một khoảng thời gian nhất định. - Nhược điểm: Dễ xảy ra tình trạng script trước chưa dừng lại thì script sau lại hoạt
động, dễ xảy ra xung đột đối với nhau.
• Cách 3:
- Giải pháp: Kết hợp cả hai cách trên: Đặt thời gian chạy của Script và đặt thời gian chạy cron/schedule task thích hợp.
- Ưu điểm: khắc phục được nhược điểm trên của hai cách trên.
- Nhược điểm: Script phải chạy và dừng liên tục. Có thể ảnh hưởng đến hiệu suất hoạt động.
Nhận thấy những nhược điểm đó dễ ảnh hưởng đến hiệu quả chương trình, nhóm đã nghiên cứu và đi đến giải pháp như sau:
• Giải pháp quản lý tiến trình các Robot của nhóm: - Đăt thời gian chạy cho bot là vô hạn.
- Đồng thời dùng cron/schedule để định thời gian thực thi bot.
- Kết hợp với việc kiểm tra Process ID của bot để tránh được tình trạng một Bot chạy song song nhiều hơn một lần.