2012-06-28 25 views
5

Tôi sử dụng lệnh exec() để thực thi lệnh, hoặc là linux hoặc windows.Thực hiện lệnh PHP và đầu ra nhật ký mà không cần chờ đợi

Làm cách nào để bạn thực hiện lệnh, linux và cửa sổ và đăng xuất kết quả mà không cần chờ?

Tôi biết cho Linux, không chờ kết quả: command* > /dev/null 2>/dev/null &

Và để đăng nhập đầu ra cho Linux: command* > /path/to/log.txt 2>/path/to/error.txt

Làm thế nào bạn sẽ đi về khai thác gỗ và đặt nó vào nền tảng về một lệnh? Cửa sổ trông như thế nào?

+1

Bạn có thể exec() bao gồm chuyển hướng đầu ra vào một tệp và sau đó đọc tệp qua PHP sau này. – ametren

+1

'&' ở cuối đặt mọi thứ ở chế độ nền. Nhưng điều đó không làm việc trong các cửa sổ, đó là Linux. – hakre

+0

Trong cửa sổ, tôi tin rằng bạn chỉ cần sử dụng 'start' – ametren

Trả lời

12

Trên Linux bạn có thể làm:

exec('command* > /dev/null 2>/dev/null &'); 

Trên Windows bạn có thể làm:

pclose(popen('start /B cmd /C "command* >NUL 2>NUL"', 'r')); 

Cả hai ví dụ vô hiệu hóa đầu ra và các lỗi, những đi đến /dev/null (linux) hoặc NUL (cửa sổ) mà có nghĩa là chúng được lưu trữ "hư không".

Bạn có thể thay thế chúng bằng các đường dẫn hợp lệ trên hệ thống của mình.

Trên Linux, & ở vị trí cuối cùng nền đó thành nền. Trên cửa sổ, điều này phức tạp hơn và cần start để gọi quá trình và cmd để cho phép chuyển hướng các luồng.

+0

Tôi muốn đăng nhập nó là – user1105430

+2

Bạn có thể trực tiếp xuất ra một tệp, và sau đó fopen /! Feof tệp nhật ký –

+0

+1 chính xác những gì tôi đã suy nghĩ – ametren

Các vấn đề liên quan