PHP 에서 매우 간단한 브라우저 기반 MP3 플레이어를 작성하고 있습니다. 이 프로젝트의 일부에서는 모든 MP3 파일을 WAV 파일 로 변환해야 합니다. PHP shell_exec
에는 쉘을 통해 명령을 실행할 수 있는 함수 가 있습니다. 내 프로젝트의 경우 누군가가 자신의 계정에 노래를 업로드 할 때마다 다음 명령이 실행됩니다.
shell_exec('ffmpeg -i inputSong.mp3 outputSong.wav')
정확한 시간에 노래 업로드 를 완료 한 10 명의 다른 사람들이 있다고 가정 해 봅시다 . Linux 서버는 10 개의 셸 명령을 동시에 실행합니까? 아니면 한 번에 하나씩 만 수행합니까?
서버가 여러 쉘 명령을 동시에 처리 할 수 있다면 서버가 동시에 10 개의 다른 노래 변환을 처리 할 수 있습니까? 아니면 한 번에 하나씩 만 수행합니까?
답변
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, 하드 디스크 드라이브 등)에 따라 다릅니다.
답변
많은 수의 사용자를 지원하려면 변환 프로세스를 처리하는 다른 방법을 조사해야합니다.
예를 들어, 파일을 변환하고 완료 상태를 위해 시스템을 폴링하도록 요청을 시스템에 게시하도록 작업 스케줄링 시스템을 설정할 수 있습니다. 예약 시스템은 대기열에서 작업을 가져와 한 번에 최대 4 개의 파일 변환을 수행한다고 말합니다.
이 질문은 흥미로울 수 있습니다.