Может ли сервер обрабатывать одновременные команды оболочки?

10

Я пишу очень простой браузер на основе MP3 в PHP . Часть этого проекта требует, чтобы каждый файл MP3 был преобразован в файл WAV . В PHP есть функция, называемая shell_exec , которая позволяет вам выполнить команду через оболочку. Для моего проекта, когда кто-то загружает песню в свою учетную запись, будет выполнена следующая команда:

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

Итак, скажем, есть 10 разных людей, которые завершают загрузку песни в одно и то же время. Сервер Linux выполняет 10 команд оболочки одновременно или выполняет только один за раз?

Если сервер может обрабатывать несколько команд оболочки одновременно, сможет ли сервер одновременно обрабатывать 10 разных песен или делать это только один за раз?

    
задан user784637 28.08.2011 в 05:12
источник

2 ответа

12

Если вы делаете это через PHP (или любой другой язык, который имеет доступ к командам оболочки), они будут выполняться отдельно, а это означает, что они будут выполняться одновременно, если случайно 10 пользователей используют скрипт PHP одновременно , Каждый вызов PHP через shell_exec будет выполняться независимо от других. У меня сам скрипт shell_exec , который показывает некоторые данные моим пользователям для определенных изображений, и это делается независимо от других исполняемых скриптов PHP через shell_exec .

Существует ограничение на то, сколько одновременных пользователей PHP может обрабатывать, но это зависит от вашего веб-сервера, файла конфигурации PHP и MySQL, если вы его используете. Я знаю, что число больше 100 в то же время.

При использовании команд с интенсивным использованием процессора, например, для конвертирования видео, эффективное использование команд будет зависеть от того, сколько у вас RAM и сколько у вас мощности процессора. Для кого-то с ОЗУ 64 МБ и 80486 было бы неплохо попытаться конвертировать два видео и 10 песен. Это приведет к перегрузке системы. Для кого-то с сервером Core 2 Duo и оперативной памятью 4 ГБ я думаю, что преобразование нескольких песен было бы частью торта.

В принципе, да, Linux может обрабатывать несколько одновременных команд оболочки, особенно из PHP, но общая производительность будет зависеть от ресурсов сервера (процессор, оперативная память, жесткий диск и т. д.).

    
ответ дан Luis Alvarado 28.08.2011 в 05:25
источник
6

Если вы должны поддерживать большое количество пользователей, вам придется исследовать альтернативный метод обработки процесса конверсии.

Например, вы, скорее всего, настроите систему планирования заданий так, чтобы вы отправляли запросы в систему для преобразования файла и опроса системы для статуса завершения. Система планирования возьмет задачи из очереди и скажет одновременное выполнение до четырех преобразований файлов.

Этот вопрос может представлять интерес:

Ссылка

    
ответ дан Steve-o 28.08.2011 в 08:17