2012-01-22 4 views
9

मेरे पास ffmpeg एक PHP फ़ाइल में एक वीडियो रूपांतरण कर रहा है और यह काम करता है जैसा कि यह करना चाहिए। समस्या यह खत्म होने में एक मिनट तक लगती है। मैंने सोचा था कि यह करने के लिए आसान हो सकता है, लेकिन मैं केवल यह पृष्ठभूमि में काम करने के लिए जब मैं इसphp जारी रखने के दौरान पृष्ठभूमि में खोल निष्पादन कैसे करें

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

समस्या मैं तीन उपयोग करने की आवश्यकता है की तरह सिर्फ एक आदेश (mp4box बिना जैसे ही पास रूपांतरण) का उपयोग प्राप्त कर सकते हैं यद्यपि उचित रूपांतरण करने के लिए अलग-अलग आदेश। अब तक मेरी आज्ञाओं PHP फ़ाइल में इस तरह दिखेगा और यह काम करता है, लेकिन एक बड़े पैमाने पर देरी से:

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

मैं कैसे पृष्ठभूमि में खोल कार्यकारी रन बना सकते हैं पीएचपी जारी है, जबकि?

उत्तर

24

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

> /dev/null 2>/dev/null & जोड़ना उत्पादन निकाल देंगे देखें और एक अन्य प्रक्रिया में आदेश रन (& नई प्रक्रिया बनाता है, > और 2> सामान्य और त्रुटि उत्पादन रीडायरेक्ट)

+1

कि के लिए धन्यवाद, यह पोस्ट ने समस्या के समाधान के साथ भी मदद की http://stackoverflow.com/questions/6402658/php-shell-exec-multiple-commands-at-once-in-background। ऐसा लगता है कि मुझे सभी तीन आदेशों को && का उपयोग करके कनेक्ट करने की आवश्यकता है और फिर आउटपुट को रीडायरेक्ट करने से पहले पूरी चीज को ब्रैकेट में लपेटना आवश्यक है। समाधान के प्रत्येक भाग के स्पष्टीकरण के लिए –

+0

+1, समान प्रश्नों के समान उत्तरों पर नहीं देखा गया है। – AntonChanning

संबंधित मुद्दे

 संबंधित मुद्दे