Чи може сервер обробляти одночасно команди оболонки?


11

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

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

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

Якщо сервер може обробляти декілька команд оболонки одночасно, чи зможе сервер обробляти перетворення 10 різних пісень одночасно чи робить це лише одна за одною?


Як пов’язаний цей ubuntu? Чи не належить він до сервера default або unix?
бітмаска

5
Будьте дуже обережні, приймаючи ім'я вхідного файлу від користувача. Хтось може спеціально створити ім'я файлу, яке імітує якусь команду, і яку ви виконували б, і ви, по суті, були б зламані.
Рорі

Відповіді:


13

Якщо ви робите це за допомогою PHP (або будь-якої іншої мови, яка має доступ до команд оболонки), вони будуть виконані окремо, це означає, що вони будуть виконані одночасно, якщо випадково 10 користувачів одночасно використовують сценарій PHP. Кожен дзвінок PHP shell_execздійснюватиметься незалежно від інших. У мене є shell_execсценарій, який показує деяку інформацію моїм користувачам для певних зображень, і це робиться незалежно від інших сценаріїв, виконаних PHP shell_exec.

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

При використанні інтенсивних команд процесора, наприклад, для перетворення відео, ефективне використання команд залежатиме від того, скільки ви маєте оперативної пам’яті та скільки потужності процесора. Для когось із 64 Мб оперативної пам’яті та 80486 було б погано спробувати перетворити два відео та 10 пісень. Це б перевантажило систему. Для когось із сервером Core 2 Duo та 4 ГБ оперативної пам’яті я думаю, що перетворення декількох пісень було б частиною пирога.

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


6

Якщо б ви підтримали велику кількість користувачів, вам доведеться дослідити альтернативний метод керування процесом перетворення.

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

Це питання може зацікавити:

/programming//q/265073/175849


Ще одна чудова відповідь, дякую steve-o
user784637
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.