Um servidor pode manipular comandos shell simultâneos?

10

Estou escrevendo um navegador muito simples com MP3 em PHP . Parte deste projeto requer que cada arquivo MP3 seja convertido em um arquivo WAV . Existe uma função no PHP chamada shell_exec que permite executar um comando através do shell. Para o meu projeto, sempre que alguém enviar uma música para a conta, o seguinte comando seria executado:

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

Então, digamos que há 10 pessoas diferentes que terminam o upload de uma música no mesmo horário exato. O servidor Linux executa 10 comandos shell simultaneamente ou apenas um por vez?

Se um servidor puder lidar com vários comandos do shell simultaneamente, o servidor seria capaz de converter 10 músicas diferentes ao mesmo tempo ou só faria uma de cada vez?

    
por user784637 28.08.2011 / 07:12

2 respostas

12

Se você estiver fazendo isso via PHP (ou qualquer outra linguagem que tenha acesso aos comandos shell) eles serão feitos separadamente, o que significa que eles serão feitos simultaneamente se, por acaso, os 10 usuários usarem o script PHP ao mesmo tempo . Cada chamada PHP através de shell_exec será feita independentemente das outras. Eu mesmo tenho um script shell_exec que mostra algumas informações aos meus usuários para certas imagens e isso é feito independentemente de outros scripts executados pelo PHP através de shell_exec .

Existe um limite para quantos usuários simultâneos o PHP pode manipular, mas isso depende do seu servidor web, do arquivo de configuração do PHP e do MySQL se você estiver usando-o. Eu sei que o número é maior que 100 ao mesmo tempo.

Ao usar comandos intensivos de CPU, por exemplo, converter vídeos, o uso efetivo dos comandos dependeria da quantidade de memória RAM que você tem e da quantidade de energia que você tem na CPU. Para alguém com 64 MB de RAM e um 80486 , seria ruim tentar converter dois vídeos e 10 músicas. Isso sobrecarregaria o sistema. Para alguém com um servidor Core 2 Duo e 4 GB de RAM, acho que converter várias músicas seria fácil.

Então, basicamente, sim, o Linux pode lidar com vários comandos shell simultâneos, especialmente do PHP, mas o desempenho geral dependeria dos recursos do servidor (CPU, RAM, unidade de disco rígido, etc.)

    
por Luis Alvarado 28.08.2011 / 07:25
6

Se você fosse oferecer suporte a um grande número de usuários, teria que investigar um método alternativo de lidar com o processo de conversão.

Por exemplo, você provavelmente configuraria um sistema de agendamento de trabalhos de tal forma que publicasse solicitações ao sistema para converter um arquivo e pesquisar no sistema o status de conclusão. O sistema de agendamento levaria as tarefas de uma fila e executaria até quatro conversões de arquivos por vez.

Esta questão pode ser de interesse:

link

    
por Steve-o 28.08.2011 / 10:17