2013-02-09 1 views
0

나는 exec(), FFMPEG PHP로 비디오를 변환하고 싶다. 백그라운드에서 스크립트를 실행하고 싶습니다. 어떻게해야합니까?백그라운드 PHP에서 비디오를 변환 ffmpeg?

/*** convert video to flash ***/ 

$v = date('H-i-s'); 

// exec("ffmpeg -i uploaded_files/770530705510e88ec723a3-20130111_1221_43.avi -ar 22050 -ab 32 -f flv -s 320x240 flash/".microtime()."video.flv 1> flash/".$v."_block.txt 2>&1"); 

$cmd = 'ffmpeg -i uploaded_files/770530705510e88ec723a3-20130111_1221_43.avi -ar 22050 -ab 32 -f flv -s 320x240 flash/'.microtime().'.flv'; 

$outputfile = $v.'.txt.'; 
$pidfile = $v.'_id.txt.'; 

     exec(sprintf("%s > %s 2>&1 & echo $! >> %s", $cmd, $outputfile, $pidfile)); 

이것은 내 코드이지만 아무 것도 수행하지 않습니다. PHP로 스크립트를 실행하고 싶지만 스크립트가 완료 될 때까지 HTTP 로딩 시간을 기다리지 않으려 고합니다 ...

또는 exec()를 사용하여 something.php를 어떻게 실행할 수 있습니까? ? PHP를 실행할 수 있다면 필요한 모든 것을 쉽게 만들 수 있습니다. (linux debian, apache2, php5)

답변

1

대기열에 작업을 추가하고 서버가 비동기식 ffmpeg 변환을 처리하도록하는 것이 가장 좋습니다.

사용자는 서버가 이미 작업을 완료했는지 수동으로 다시 확인해야합니다.

당신은 같은 것을 할 필요가 :

  1. 는 큐 데이터베이스 테이블을 만듭니다.
  2. 새로운 ffmpeg 변환을 수행해야하는 경우 작업을 대기열 테이블에 추가하십시오.
  3. 서버에서 자동으로 새 작업을 찾고 ffmpeg 변환을 실행하는 cronjob을 추가하십시오. More details here.
  4. cronjob이 변환을 마쳤 으면 작업을 완료로 표시하거나 삭제하십시오.
+0

그리고 끝나면 내 사용자에게 전자 메일을 보내려면 어떻게합니까? ... 자동 보고서를 가져올 수 없습니까? 마치 .. 완료된 automaticali가 SQL 레코드를 삽입 한 후 ... ...? – janos

+0

예, 가능합니다. –

+0

어떻게 말해 줄 수 있습니까? 간단한 예를 들어 주시겠습니까? 그것은 나를 위해 정말 도움이 될 것입니다 .. – janos