2011-04-26 6 views
0

전반적인 개념적 문제이므로이 질문을하는 방법을 모르겠지만 시도해 보겠습니다.서버 처리 대기열 만들기

Vimeo와 같은 비디오 호스팅 웹 사이트와 개념적으로 비슷한 프로세스를 만들려고합니다. 예를 들어 Vimeo를 사용하면 사용자가 비디오를 메인 서버에 업로드하고 비디오를 처리 대기열에 추가하며 비디오 처리 중에 다른 작업을 수행 할 수 있습니다. 언젠가 나중에 사용자는 처리가 완료되었다는 이메일을 받게되고 이제 비디오에 액세스 할 수 있으며 사용자는 원하는대로 무엇이든 할 수 있습니다.

제 질문은 이것이 어떻게 작동합니까? 내 경험은 주로 PHP에서 모든 처리가 해당 페이지의 코드 (또는 포함)를 통해 직접 수행됩니다. 사용자가 페이지에서 다른 곳으로 이동하는 동안이 처리와 같은 것을 어떻게 처리합니까?

이것은 내 생각입니다 ... 제발 저를 시정하십시오. 사용자가 제출 한 페이지는 일종의 API 후크를 통해 파일을 처리 소프트웨어 대기열에 추가합니다. C 또는 Java와 같은 다른 언어로 쓰여진 프로세서가 그 일을 처리 한 다음 완료되면 일부 PHP 페이지에 대한 호출을 발생시켜 사용자에게 전자 메일을 보내고 수행해야 할 작업을 수행합니다. 비디오.

나는 최소한 개념적으로, 저기있는 큰 웹 사이트의 "블랙 박스"가 어떻게 작동하는지 이해하려고 노력하고 있다고 생각합니다. 누구든지 나를 도울 수 있습니까? 죄송합니다. 크고 막연한 질문입니다.

답변

0

귀하의 질문에 대한 한 가지 해결책은 비디오 처리 및 사용자 메일 발송을 처리하는 새로운 프로세스 포크를 시작한 다음 주 프로세스가 평소와 같이 계속 진행되는 것입니다. 이렇게하면 주 프로세스가 중단되어 사용자가 처리를 마칠 때까지 기다리게됩니다.

현재 PHP에서 처리 포크를 만드는 방법에 대해 읽을 수 있습니다 http://php.net/manual/en/book.pcntl.php

을 다음과 같은는 FFmpeg으로 영상 처리를 HANDELS 응용 프로그램이 있습니다 http://www.ffmpeg.org/

대신 그냥 실행 새로운 프로그래밍 언어를 사용하지의 exec 함수를 사용하여 ffmpeg와 같은 cli 응용 프로그램을 실행하십시오. http://php.net/manual/en/function.exec.php

서버가 과부하되지 않도록 프로세스를 큐에 넣는 방법을 찾아야합니다. 어쩌면 활성 프로세스에 대해 데이터베이스를 점검하고 테이블에 허용되는 것보다 적은 활동 프로세스가있을 때까지 대기하는 기능이 필요할 수도 있습니다.

+0

우수. 내가 찾는 것을 정확하게 들려 준다. 나는 사실 ffmpeg와 imagemagick을 보았고 비디오와 스틸을 모두 처리 할 수 ​​있기를 원했기 때문에 두 가지를 모두 사용하게 될 것입니다. 프로세스 포크를 볼 시간. 정말 고마워! –