Quản lý tiến trình của Robot (Robot process)

Một phần của tài liệu LUẬN VĂN XÂY DỰNG ỨNG DỤNG THU THẬP DỮ LIỆU WEB ĐỘNG (Trang 36 - 38)

5 Thiết kế

6.7.1.1Quản lý tiến trình của Robot (Robot process)

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.

o Nếu có, Robot sẽ dừng lại.

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.

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à timeout (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à timeout, sau thời gian timeout này script sẽ

tự động 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:

- Đặ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. Người lập trình khó có thể kiểm tra được tình trạng của script đó.

Cách 2:

- 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:

- 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. (adsbygoogle = window.adsbygoogle || []).push({});

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

Một phần của tài liệu LUẬN VĂN XÂY DỰNG ỨNG DỤNG THU THẬP DỮ LIỆU WEB ĐỘNG (Trang 36 - 38)