Gần đây tôi đã nghiên cứu việc sử dụng Beanstalkd với PHP. Tôi đã học được khá nhiều nhưng có một số câu hỏi về thiết lập trên một máy chủ, vvCách thiết lập Beanstalkd với PHP
Dưới đây là cách tôi nhìn thấy nó làm việc:
- tôi cài đặt Beanstalkd và bất kỳ phụ thuộc (như libevent) trên máy chủ Ubuntu của tôi. Sau đó tôi bắt đầu beanemon beanstalkd (mà về cơ bản nên chạy mọi lúc).
- Một nơi nào đó trong trang web của tôi (chẳng hạn như khi người dùng thực hiện một số tác vụ, v.v.), tác vụ được thêm vào các ống khác nhau trong hàng đợi Beanstalkd.
Tôi có một tập lệnh bash (chẳng hạn như tập lệnh sau) được chạy dưới dạng deamon về cơ bản thực thi tập lệnh PHP.
#!/bin/sh php worker.php
4) Các kịch bản người lao động sẽ có một cái gì đó như thế này để thực hiện xếp hàng nhiệm vụ:
while(1) {
$job = $this->pheanstalk->watch('test')->ignore('default')->reserve();
$job_encoded = json_decode($job->getData(), false);
$done_jobs[] = $job_encoded;
$this->log('job:'.print_r($job_encoded, 1));
$this->pheanstalk->delete($job);
}
Bây giờ đây là những câu hỏi của tôi dựa trên các thiết lập ở trên (mà chính xác cho tôi nếu tôi sai về điều đó):
Giả sử tôi có nhiệm vụ nhập nguồn cấp dữ liệu RSS vào cơ sở dữ liệu hoặc thứ gì đó. Nếu 10 người dùng làm điều này cùng một lúc, tất cả họ sẽ được xếp hàng đợi trong ống "thử nghiệm". Tuy nhiên, sau đó chúng chỉ được thực thi một lần. Sẽ tốt hơn nếu có 10 ống khác nhau cùng thực hiện cùng một lúc?
Nếu tôi cần thêm ống, điều đó có nghĩa là tôi cần 10 tập lệnh của nhân viên không? Một cho mỗi ống tất cả chạy đồng thời với cơ bản cùng một mã ngoại trừ chuỗi chữ trong hàm watch().
Nếu tôi chạy tập lệnh đó dưới dạng daemon, nó hoạt động như thế nào? Nó sẽ liên tục thực hiện kịch bản lệnh worker.php? Kịch bản đó lặp lại cho đến khi hàng đợi trống rỗng về mặt lý thuyết, vì vậy nó không nên chỉ được khởi động một lần? Làm thế nào để daemon quyết định tần suất thực thi worker.php như thế nào? Đó chỉ là một thiết lập?
Cảm ơn!
Cảm ơn bạn đã liên kết! Tôi chắc chắn sẽ xem xét những điều đó. Câu hỏi về # 2: Kịch bản đó sẽ được thực thi bao lâu một lần? Điều đó hoàn toàn dựa trên tần suất tôi có tập lệnh bash của tôi được thực hiện bởi daemon? – joshholat
Ngoài ra, có cách nào thuận tiện (thông qua một đoạn mã hoặc "bảng điều khiển" loại điều) để xem tất cả những gì đang thực hiện, vv với cây đậu? – joshholat
hầu hết/tất cả thư viện sẽ cung cấp cuộc gọi đến các lệnh thống kê, danh sách-ống và lệnh stat-ống. Có một số người khác nữa. Tôi đã không nhìn thấy https://github.com/andreisavu/django-jack chạy, nhưng điều đó có thể làm một số điều quá. –