2012-01-22 27 views
9

Tôi có ffmpeg thực hiện chuyển đổi video trong tệp PHP và nó hoạt động như bình thường. Vấn đề là phải mất đến một phút để điều này kết thúc. Tôi nghĩ rằng nó có thể được dễ dàng để làm nhưng tôi chỉ có thể lấy nó để làm việc ở chế độ nền khi tôi sử dụng chỉ là một lệnh (ví dụ như thông qua chuyển đổi duy nhất mà không mp4box) như thế nàyCách thực hiện shell exec chạy trong nền trong khi php tiếp tục

exec("nohup " . $ffmpegPath . " -i " . $srcFile . " -f mp4 -vcodec libx264 -crf 27 -s " . $srcWidth . "x" . $srcHeight . " -an -r 20 " . $destFile . ".mp4 > /dev/null 2>&1 &"); 

Vấn đề là tôi cần phải sử dụng ba các lệnh khác nhau để thực hiện chuyển đổi thích hợp. Cho đến nay các lệnh của tôi trông giống như thế này trong tệp PHP và nó hoạt động, nhưng với một sự chậm trễ lớn:

exec($ffmpegPath . " -y -i " . $srcFile . " -f mp4 -pass 1 -passlogfile " . $video_pass_log . " -vcodec libx264 -vpre ipod640 -b:v 2M -bt 4M -an " . $destFile . ".mp4"); 
exec($ffmpegPath . " -y -i " . $srcFile . " -f mp4 -pass 2 -passlogfile " . $video_pass_log . " -vcodec libx264 -vpre ipod640 -b:v 2M -bt 4M -acodec libfaac -ac 2 -ar 44100 -ab 96k " . $destFile . ".mp4"); 
exec($mp4boxpath . " -tmp /tmp -hint " . $destFile . ".mp4"); 

Làm thế nào tôi có thể làm cho trình quản lý shell chạy trong nền trong khi PHP tiếp tục?

Trả lời

24

Xem Is there a way to use shell_exec without waiting for the command to complete?

Thêm > /dev/null 2>/dev/null & sẽ loại bỏ các đầu ra và chạy các lệnh trong quá trình khác (& tạo ra quy trình mới, các >2> chuyển hướng đầu ra bình thường và không bị lỗi)

+1

Nhờ cho rằng, điều này bài đăng cũng đã giúp giải quyết vấn đề http://stackoverflow.com/questions/6402658/php-shell-exec-multiple-commands-at-once-in-background. Có vẻ như tôi cần kết nối cả ba lệnh bằng cách sử dụng && và sau đó bọc toàn bộ nội dung trong dấu ngoặc trước khi chuyển hướng đầu ra. –

+0

+1 để giải thích về từng phần của giải pháp, không thấy trên các câu trả lời tương tự cho các câu hỏi tương tự. – AntonChanning

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