Hỏi về cách thức hoặc phương án cho việc tạo Job Schedule

Hello mọi người,
E dân gà. Đang tìm hiểu zụ tạo schedule.
E xin trình bày như sau:
Ví dụ e có 10 user, 1 user có 50 câu lệnh. 1 câu lệnh chạy mất 2 phút.
Khi e dùng hàm for thì e sẽ mất tận : 10 x 50 x 2 = 1000 phút => rát là lâu
Cái e mong mún là:
tạ 1 thời điểm, chạy cùng lúc 10 câu lệnh trong 1 phút. tổng thời gian e mất chỉ là 50 phút cho 50 lệnh và chạy hoàn thành cho 10 user.
Nhờ các a tư vấn cho e giải pháp

Không hiểu hỏi gì luôn. Bản chất của bài toàn là tuần tự hay song song. Nếu nó là tuần tự thì không có cách nào để bạn làm giảm thời gian ngoại trừ tăng cường phần cứng để tốc độ chạy nhanh hơn.

Tuần tự là sao? Là A xong rồi mới đến B, B xong rồi mới đến C. Ví dụ: làm nhà thì phải đổ móng xong mới dựng cột, dựng cột xong rồi mới xây tường.

Song song là sao? Là các việc có thể bắt đầu mà không cần việc khác phải hoàn thành. Ví dụ: anh A đang gọi điện thoại, trong khi đó anh B có thể ra mở cửa cho khách mà không đợi anh A nghe xong điện thoại.

Vậy, hãy cho người ta biết 1 user có 50 câu lệnh, và họ tự chạy lệnh hay bạn phải nạp lệnh cho họ? Lệnh đó chạy mất 2 phút có liên quan gì đến lệnh của những user khác không?

Hàm for mà bạn dùng là bạn tự viết à? Theo mình biết, for không phải là làm, nó là cấu trúc điều khiển và dùng để thực hiện tuần tự công việc chứ không phải làm song song.

Nếu bạn muốn anh em hỗ trợ nhanh hơn, hãy đưa code hoặc viết mã giả đưa lên đây để anh em hiểu vấn đề bạn đang gặp phải.

Thân ái!

3 Likes

Hello Vô Tin,
Cám ơn anh đã dành thời gian trả lời.
Rất như mong đợi. Em cũng k biết diễn đạt nó như thế nào. Và sau khi đọc phản hồi của a.
E xin đính chính lại.
Chính xác cái e cần là song song như a nói.

Việc 1 user có 50 lệnh và mình sẽ phải nạp lệnh cho họ. vì ở đây e muốn tạo schedule để thực hiện lệnh mà bất chấp những lệnh khác xen ngang và k làm gián đoạn lệnh đang thực hiện (nghĩa là song song nhiều lệnh cùng lúc)

Ví dụ như e đang viết auto like hoặc post bài lên facebook chẳng hạn. Nếu tuần tự thì sẽ rất lâu nếu nhiều user .

PHP để viết xử lý song song liên quan đến các khái niệm multi-process, parallel processing, multi-threading,… theo mình là việc khó, mất nhiều thời gian để làm chủ kỹ thuật đó, không làm ngay được nếu không thực sự giỏi về lập trình song song nói chung.

Vì thế cho nên, nếu chưa đủ sức theo cách lập trình kiểu này, thì hãy làm gần như sau sẽ dễ hơn:

  • Mở nhiều tab trình duyệt và mỗi tab nhập vào làm, thì mỗi tab sẽ tương đương với một job. Cách này chỉ thực hiện được khi số tab nhỏ, tầm 5-7 tab gì đó mở cùng 1 đường dẫn file PHP, còn vài chục tab trở lên, e rằng người làm sớm phát điên vì rối beng.

  • Viết mã PHP hoàn chỉnh rồi thì chuyển code PHP thành dạng script chạy ở dòng lệnh mà không cần tới trình duyệt, nạp tham số vào câu lệnh PHP. Và sau đó viết shell script để nó có thể gọi môt lúc 1 php script 50 lần hoặc gọi 50 script cùng chạy. Có thể tham khảo https://wp-cli.org/ để hình dung cách sử dụng PHP như là lệnh gõ vào console. Khi chạy ngon rồi có thể tạo cron để có thể tự động hoạt động vào thời điểm đặt sẵn.

2 Likes

Hello bác.
Cám ơn bác đã rất nhiệt tình tư vấn.
Em sẽ tìm hiểu thêm…
Mong bác sẽ luôn luôn hỗ trợ mọi người như vậy.

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?