2012-01-22 14 views
9

Ho ffmpeg facendo una conversione video in un file PHP e funziona come dovrebbe. Il problema è che ci vuole un minuto perché questo finisca. Ho pensato che potrebbe essere facile da fare, ma posso solo farlo funzionare in background quando uso un solo comando (ad esempio, la conversione a singolo passaggio senza MP4Box) come questoCome eseguire shell exec in background mentre php continua

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

Il problema è che ho bisogno di usare tre diversi comandi per fare una corretta conversione però. Finora i miei comandi simile a questa nel file PHP e funziona, ma con un ritardo enorme:

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

Come posso fare la corsa exec della shell in background mentre PHP continua?

risposta

24

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

Aggiunta > /dev/null 2>/dev/null & rimuoverà l'uscita ed esegue il comando in un altro processo (la & crea il nuovo processo, il > e 2> reindirizza l'output normale e l'errore)

+1

Grazie per quello, questo post ha anche aiutato con una soluzione al problema http://stackoverflow.com/questions/6402658/php-shell-exec-multiple-commands-at-once-in-background. Sembra che avessi bisogno di connettere tutti e tre i comandi usando && e poi avvolgere il tutto tra parentesi prima di reindirizzare l'output. –

+0

+1 per la spiegazione di ciò che fa ogni parte della soluzione, non vista su risposte simili a domande simili. – AntonChanning

Problemi correlati