서버가 동시 쉘 명령을 처리 할 수 ​​있습니까?


11

PHP 에서 매우 간단한 브라우저 기반 MP3 플레이어를 작성하고 있습니다. 이 프로젝트의 일부에서는 모든 MP3 파일을 WAV 파일 로 변환해야 합니다. PHP shell_exec에는 쉘을 통해 명령을 실행할 수 있는 함수 가 있습니다. 내 프로젝트의 경우 누군가가 자신의 계정에 노래를 업로드 할 때마다 다음 명령이 실행됩니다.

shell_exec('ffmpeg -i inputSong.mp3 outputSong.wav')

정확한 시간에 노래 업로드 를 완료 한 10 명의 다른 사람들이 있다고 가정 해 봅시다 . Linux 서버는 10 개의 셸 명령을 동시에 실행합니까? 아니면 한 번에 하나씩 만 수행합니까?

서버가 여러 쉘 명령을 동시에 처리 할 수 ​​있다면 서버가 동시에 10 개의 다른 노래 변환을 처리 할 수 ​​있습니까? 아니면 한 번에 하나씩 만 수행합니까?


이 우분투는 어떤 관련이 있습니까? serverfault 또는 unix에 속하지 않습니까?
비트 마스크

5
사용자로부터 입력 파일 이름을 받아 들일 때 매우주의하십시오. 누군가 특정 명령을 모방 한 파일 이름을 특수하게 조작하여 실행할 수 있으며 본질적으로 해킹 당할 수 있습니다.
Rory

답변:


13

PHP (또는 쉘 명령에 액세스 할 수있는 다른 언어)를 통해 수행하는 경우 별도로 수행되므로 10 명의 사용자가 동시에 PHP 스크립트를 사용하면 동시에 수행됩니다. 각 PHP 호출 shell_exec은 다른 것과 독립적으로 수행됩니다. 나 자신 shell_exec에게 특정 이미지에 대한 일부 정보를 사용자에게 보여주는 스크립트가 있으며 이는를 통해 다른 PHP 실행 스크립트와 독립적으로 수행됩니다 shell_exec.

PHP가 처리 할 수있는 동시 사용자 수에는 제한이 있지만 사용중인 웹 서버, PHP 구성 파일 및 MySQL에 따라 다릅니다. 동시에 숫자가 100보다 큽니다.

비디오 변환과 같이 CPU 집약적 명령을 사용하는 경우 명령의 효과적인 사용은 보유하고있는 RAM 용량과 CPU 용량에 따라 다릅니다. 64MB RAM과 80486을 가진 사람에게는 두 개의 비디오와 10 개의 노래를 변환하려고 시도하는 것이 좋지 않습니다. 시스템에 과부하가 걸리게됩니다. Core 2 Duo 서버와 4GB RAM을 가진 사람에게는 여러 곡을 변환하는 것이 일종의 케이크라고 생각합니다.

따라서 기본적으로 Linux는 특히 PHP에서 여러 개의 동시 셸 명령을 처리 할 수 ​​있지만 전반적인 성능은 서버의 리소스 (CPU, RAM, 하드 디스크 드라이브 등)에 따라 다릅니다.


6

많은 수의 사용자를 지원하려면 변환 프로세스를 처리하는 다른 방법을 조사해야합니다.

예를 들어, 파일을 변환하고 완료 상태를 위해 시스템을 폴링하도록 요청을 시스템에 게시하도록 작업 스케줄링 시스템을 설정할 수 있습니다. 예약 시스템은 대기열에서 작업을 가져와 한 번에 최대 4 개의 파일 변환을 수행한다고 말합니다.

이 질문은 흥미로울 수 있습니다.

/programming//q/265073/175849


또 다른 위대한 답변, 감사합니다 steve-o
user784637
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.