2011-08-28 14 views
5

Tôi đang sử dụng php trong apache trên CentOS. Tôi cần phục vụ người dùng, rằng họ có thể xóa các tệp lớn bằng cách nhấp. cố gắng sử dụng shell_exec. nhưng không chạy ở chế độ nền. nó chạy và làm cho người dùng chờ đợi.shell_exec không chạy trong nền, bất kỳ giải pháp nào khác?

lệnh của tôi:

$ D_command = "rm -rf video/'$ Mdelete'";

shell_exec ($ D_command);

cảm ơn!

Trả lời

4

ass & ở cuối lệnh.

$D_command="nohup rm -rf videos/'$Mdelete' > /log/deletedfile.log 2>&1 &"; 
+0

bạn có thể thêm nohup nếu bạn muốn ở đầu. "nohup rm -rf video/'$ Mdelete' &" –

+0

Bạn phải thêm nohup, nếu không quy trình sẽ xuất hiện dưới dạng apache và không phải là chuỗi. –

+0

Đã thử. vẫn khiến người dùng chờ ... – user692601

0

Thử chạy

rm -rf videos/'$Mdelete' & 

sử dụng exec. Dấu và chỉ để chạy đến nền

+0

nohup phải được thêm vào đầu lệnh. Điều này cho trình thông dịch php chạy tiến trình trong nền. Thay vì trả về đầu ra của lệnh, nó trả về id quá trình –

+0

Đã thử nó. vẫn khiến người dùng chờ ... – user692601

+0

@ user692601 bạn đã thử sử dụng 'exec' hoặc' shell_exec'? –

0

Hãy thử điều này:

popen($D_command, 'r') 
0

Tôi biết điều này là khá một câu hỏi cũ, nhưng tôi đã có cùng một vấn đề, và điều này là chỉ giải pháp làm việc sau khi thử và thất bại với exec, shell_exec, process_open:

$process = popen("nohup $D_command > /dev/null 2> /dev/null & echo $!", 'r'); 
$pid = fread($process, 32); 
Các vấn đề liên quan