Tôi đã tạo ra một php/mysql scraper, mà là chạy tốt, và không có ý tưởng làm thế nào để chạy hiệu quả nhất nó như là một công việc cron.Làm thế nào một công việc cron php có thể chạy trong/am tôi làm đúng không?
Có 300 trang web, mỗi trang có từ 20 đến 200 trang được cạo. Phải mất từ 4 - 7 giờ để cạo tất cả các trang web (tùy thuộc vào độ trễ của mạng và các yếu tố khác). Các scraper cần phải làm một chạy hoàn chỉnh một lần mỗi ngày.
Tôi có nên chạy công việc này dưới dạng 1 cron hoạt động trong 4 - 7 giờ hoặc chạy mỗi giờ 7 lần hoặc chạy 10 phút một lần cho đến khi hoàn thành?
Các kịch bản được thiết lập để chạy từ cron như thế này:
while($starttime+600 > time()){
do_scrape();
}
Mà sẽ chạy do_scrape() chức năng, mà cạo 10 url cùng một lúc, cho đến khi (trong trường hợp này) 600 giây có thông qua. Do_scrape có thể mất từ 5 - 60 giây để chạy.
Tôi yêu cầu ở đây vì tôi không thể tìm thấy bất kỳ thông tin nào trên web về cách chạy ứng dụng này và tôi lo ngại về việc chạy hàng ngày, vì php không thực sự được thiết kế để chạy dưới dạng một tập lệnh trong 7 giờ.
Tôi đã viết nó trong vanilla PHP/mysql, và nó đang chạy trên cắt giảm debian VPS chỉ với lighttpd/mysql/php5 được cài đặt. Tôi đã chạy nó với một thời gian chờ của 6000 giây (100 phút) mà không có bất kỳ vấn đề (máy chủ không bị ngã).
Bất kỳ lời khuyên nào về cách thực hiện nhiệm vụ này đều được đánh giá cao. Tôi nên theo dõi điều gì cho v.v.? hoặc tôi sẽ thực hiện điều này tất cả sai?
Cảm ơn!
Chúc mừng cho thư trả lời. Khi số lượng xử lý sau tối thiểu (~ 150ms cho mỗi yêu cầu trang 2-5 giây), chúng tôi quyết định gắn kết với cấu trúc nguyên khối thay vì tập lệnh uốn và tập lệnh xử lý. Chúng tôi đang sử dụng multi-curl để nhận được 10 URL cùng một lúc, do đó, nó được bán đa luồng, mặc dù không lý tưởng. Python sẽ là lý tưởng, nhưng nó là một trường hợp đi với những gì chúng ta biết (php) để có được công việc làm một cách nhanh chóng. Cảm ơn! – Rob