2012-01-22 22 views
9

Bir PHP dosyasında bir video dönüştürme işlemi yapıyorum ve olması gerektiği gibi çalışıyor. Sorun, bunun bitmesi için bir dakika kadar sürmesi. Ben bunu yapmak kolay olabileceğini düşündüm ama sadece ben sorun olmaz üç kullanmak zorunda olan buPhp devam ederken kabuk yürütme arka planda nasıl çalıştırılır

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

gibi sadece bir komut (mp4box olmadan örneğin tek geçişte dönüştürülme) kullandığınızda arka planda çalışmaya alabilirsiniz Gerçi uygun bir dönüşüm yapmak için farklı komutlar. Şimdiye kadar benim komutlar PHP dosyasında aşağıdaki gibi görünür ve büyük bir gecikmeyle çalışır, ancak: PHP devam ederken

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"); 

nasıl arka planda kabuk exec kaçabilirler?

cevap

24

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

çıkışını kaldıracaktır > /dev/null 2>/dev/null & ekleme Bkz yanında başka bir işlem komutu çalıştırır bunun için

+1

Teşekkür (& yeni bir süreç oluşturur > ve 2> normal ve hata çıktı yönlendirir), bu post ayrıca http://stackoverflow.com/questions/6402658/php-shell-exec-multiple-commands-at-once-in-background adresindeki bir soruna da yardımcı oldu. Görünüşe göre, üç komutu da & amp kullanarak bağladım ve çıktıyı yönlendirmeden önce tüm şeyi parantez içine sardım. –

+0

+1, çözümün her bir parçasının ne yaptığını açıklamak için benzer sorulara benzer cevaplarda görülmez. – AntonChanning

İlgili konular