2012-10-11 31 views
14

Tôi đã tìm kiếm rất nhiều để tìm câu trả lời chính xác nhưng không tìm thấy bất kỳ câu trả lời nào.quá trình nền php sử dụng chức năng exec

nhiều người đã đề cập rằng chúng tôi nên & khi kết thúc lệnh để không chờ phản hồi.
ví dụ để chạy bg.php ở chế độ nền, điều này đã được đề nghị:

exec("/usr/bin/php bg.php &"); 

nhưng nó không làm việc cho tôi. và tập lệnh chính chờ hoàn thành việc thực hiện bg.php.

Tôi cũng đọc ở đâu đó để viết bg.php đầu ra trong tệp nhật ký nhưng tập lệnh nền của tôi không tạo ra bất kỳ đầu ra nào. Nó thực hiện một số quy trình và sau đó viết một cái gì đó trong cơ sở dữ liệu.

Tôi chỉ muốn tập lệnh của mình chạy bg.php và không đợi nó kết thúc.

hãy giúp tôi bao gồm mã chính xác.

Trả lời

18

Bạn phải định tuyến lại các chương trình đầu ra ở đâu đó quá, thường là/dev/null

exec($cmd . " > /dev/null &"); 
+0

hoạt động tốt! nhưng thư mục/dev/null là gì? hiện lệnh này ghi đầu ra vào một tập tin? – Aliweb

+1

/dev/null chỉ loại bỏ dữ liệu được gửi tới nó, bạn có thể chuyển nó sang một số tệp nếu bạn cần đầu ra của chương trình – ninaj

0

Bạn đã xem là sử dụng màn hình? Bạn có thể bắt đầu một phiên màn hình chạy trong một quá trình tách rời.

screen -d -m -S my_bg_session /usr/bin/php bg.php 

Sau đó, bạn có thể kết nối đến nó sau này nếu nó vẫn đang chạy:

screen -r my_bg_session 
Các vấn đề liên quan