2011-11-21 11 views
11

Tôi đang sử dụng Ubuntu Natty với PHP 5.3.8. Tôi chỉ có Gearman làm việc trên máy chủ của tôi.Chạy công nhân bánh răng trong nền

Tôi đã thực hiện một vài thử nghiệm với một số tập lệnh mà tôi đã tắt Hướng dẫn sử dụng PHP và mọi thứ đều hoạt động tốt.

Tuy nhiên, tôi muốn biết nếu có cách nào để chạy nhân viên trong nền và cũng theo dõi để khi tôi chuyển sang tình trạng nhiều người lao động, tôi có thể theo dõi số lượng công nhân Tôi đã làm việc.

Thông thường, tôi sẽ phải mở hai thiết bị đầu cuối, một cho nhân viên và một cho khách hàng. Một cho người lao động trở thành 'bị mắc kẹt' có hiệu lực sau khi tập lệnh php được thực hiện.

Xin cảm ơn trước.

Trả lời

19

Ok. Tôi tìm thấy một giải pháp cho vấn đề trước đó của tôi. Nó liên quan đến việc sử dụng giám sát để deamonize (các) công nhân thợ may.

Dưới đây là làm thế nào để cài đặt Supervisord

apt-get install python-setuptools 
easy_install supervisor 
echo_supervisord_conf > /etc/supervisord.conf 

Dưới đây là làm thế nào để cấu hình nó (lần đầu tiên có được một kịch bản init từ here và lưu nó vào /etc/init.d/supervisord), sau đó làm như sau:

chmod +x /etc/init.d/supervisord 
update-rc.d -f supervisord defaults 

Sau đó bạn cần cập nhật tệp supervisor.conf của bạn để nói cho giám sát biết lệnh nào bạn muốn chạy như một daemon (tất nhiên, đây sẽ là công nhân của bạn). Dưới đây chỉ là một mẫu của những gì bạn sẽ thêm vào tập tin supervisord.conf của bạn, bạn sẽ cần phải cập nhật nó vào tình hình cụ thể của riêng bạn.

[program:gearman] 
command=/usr/bin/php php_gearman_worker.php 
numprocs=1 
directory=/root/gearman 
stdout_logfile=/root/gearman/supervisord.log 
environment=GEARMAN_USER=gearman 
autostart=true 
autorestart=true 
user=gearman 
stopsignal=KILL 

Khi bạn hoàn tất, sau đó bắt đầu giám sát tức là /etc/init.d/supervisord start.

Khi bạn thực hiện việc này, nhân viên Gearman của bạn hiện đang hoạt động và bây giờ bạn có thể chạy ứng dụng khách của mình qua dòng lệnh hoặc với trình duyệt của bạn.

Tôi hy vọng điều này sẽ hữu ích.

+2

'apt-get install supervisor' và tạo'/etc/supervisor/conf.d/gearman.conf' chỉ với '[program: gearman]' và 'command =/usr/bin/php php_gearman_worker.php' là tất cả những gì cần thiết cho tôi. –

5

Đối với công nhân nền bạn có thể sử dụng GearmanManager bởi Brian trăng https://github.com/brianlmoon/GearmanManager

+0

Cảm ơn rất nhiều, nhưng tôi tìm thấy một cách khác khả thi hơn khi sử dụng Supervisord. –

+0

Màn hình GearMan và Gearman Manager cùng nhau nên thực hiện thủ thuật. https://github.com/yugene/Gearman-Monitor – rjha94

5

Một lựa chọn khác là sử dụng screen đặt nhiệm vụ công nhân vào một vỏ tách ra:

screen -d -m php worker.php 
+0

cảm ơn bạn rất nhiều. – pregmatch