Я пишу очень простой браузерный MP3- плеер на PHP . Часть этого проекта требует, чтобы каждый файл MP3 был преобразован в файл WAV . В PHP есть функция, shell_exec
которая позволяет вам выполнять команду через оболочку. Для моего проекта всякий раз, когда кто-то загружает песню в свою учетную запись, будет выполняться следующая команда:
shell_exec('ffmpeg -i inputSong.mp3 outputSong.wav')
Допустим, есть 10 разных людей, которые заканчивают загрузку песни в одно и то же время. Выполняет ли сервер Linux 10 команд оболочки одновременно или только одну?
Если сервер может обрабатывать несколько команд оболочки одновременно, сможет ли сервер одновременно обрабатывать 10 разных песен или он выполняет только одну?
command-line
php
ffmpeg
user784637
источник
источник
Ответы:
Если вы делаете это через PHP (или любой другой язык, который имеет доступ к командам оболочки), они будут выполняться отдельно, что означает, что они будут выполняться одновременно, если случайно 10 пользователей одновременно используют PHP-скрипт. Каждый вызов PHP
shell_exec
будет выполняться независимо от других. У меня сам естьshell_exec
скрипт, который показывает некоторую информацию моим пользователям для определенных изображений, и это делается независимо от других скриптов, выполняемых PHPshell_exec
.Существует ограничение на количество одновременных пользователей PHP, но это зависит от вашего веб-сервера, файла конфигурации PHP и MySQL, если вы используете его. Я знаю, что число больше 100 одновременно.
При использовании команд, интенсивно использующих процессор, например, для преобразования видео, эффективное использование команд будет зависеть от того, сколько у вас оперативной памяти и сколько у вас ресурсов процессора. Для кого-то с 64 МБ ОЗУ и 80486 было бы плохо попытаться конвертировать два видео и 10 песен. Это перегрузит систему. Для кого-то с сервером Core 2 Duo и 4 ГБ оперативной памяти, я думаю, преобразование нескольких песен было бы просто.
В общем, да, Linux может обрабатывать несколько одновременных команд оболочки, особенно из PHP, но общая производительность будет зависеть от ресурсов сервера (ЦП, ОЗУ, жесткий диск и т. Д.)
источник
Если бы вы поддерживали большое количество пользователей, вам пришлось бы исследовать альтернативный метод обработки процесса конвертации.
Например, вы, скорее всего, настроите систему планирования заданий так, чтобы вы отправляли в систему запросы на преобразование файла и опрашивали систему о статусе завершения. Система планирования будет брать задачи из очереди и, скажем, выполнять до четырех преобразований файлов одновременно.
Этот вопрос может представлять интерес:
/programming//q/265073/175849
источник