web-dev-qa-db-fra.com

Un serveur peut-il gérer des commandes Shell simultanées?

J'écris un très simple navigateur basé sur MP dans PHP . Une partie de ce projet nécessite que chaque fichier MP3 soit converti en un fichier WAV . Il y a une fonction dans PHP appelée Shell_exec qui vous permet d'exécuter une commande via le shell. Pour mon projet, chaque fois que quelqu'un télécharge une chanson sur son compte, la commande suivante est exécutée:

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

Alors disons qu'il y a 10 personnes différentes qui finissent de télécharger une chanson au même moment. Le serveur Linux exécute-t-il 10 commandes Shell simultanément ou n'en exécute-t-il qu'une à la fois?

Si un serveur peut gérer plusieurs commandes Shell simultanément, le serveur sera-t-il capable de convertir 10 chansons différentes en même temps ou ne fait-il en faire qu'une seule à la fois?

11
user784637

Si vous le faites via PHP (ou tout autre langage ayant accès aux commandes Shell), elles seront effectuées séparément, ce qui signifie qu'elles seront effectuées simultanément si, par hasard, les 10 utilisateurs utilisent PHP script en même temps. Chaque appel PHP via Shell_exec sera effectué indépendamment des autres. J'ai moi-même un script Shell_exec qui fournit des informations à mes utilisateurs pour certaines images, indépendamment des autres scripts exécutés par PHP via Shell_exec.

Le nombre d'utilisateurs simultanés PHP peut être limité, mais cela dépend de votre serveur Web, du fichier de configuration PHP et de MySQL si vous l'utilisez. Je sais que le nombre est supérieur à 100 en même temps.

Lorsque vous utilisez des commandes gourmandes en ressources processeur, par exemple pour convertir des vidéos, leur utilisation dépendra de la quantité dont vous disposez RAM et de la puissance de votre processeur. Pour quelqu'un avec 64 Mo RAM et un 80486 , essayer de convertir deux vidéos et 10 chansons serait une mauvaise idée. Cela surchargerait le système. Pour les personnes disposant d’un serveur Core 2 Duo et de 4 Go RAM, je pense que la conversion de plusieurs chansons serait un jeu d’art.

Donc, fondamentalement, oui, Linux peut gérer plusieurs commandes Shell simultanées, spécialement à partir de PHP, mais les performances globales dépendent des ressources du serveur (processeur, mémoire vive, lecteur de disque dur, etc.).

13
Luis Alvarado

Si vous devez prendre en charge un grand nombre d'utilisateurs, vous devrez rechercher une autre méthode de traitement du processus de conversion.

Par exemple, vous installerez probablement un système de planification des travaux de sorte que vous envoyiez des demandes au système pour convertir un fichier et interroger le système pour connaître l'état d'achèvement. Le système de planification prend les tâches d'une file d'attente et indique qu'il est possible d'effectuer jusqu'à quatre conversions de fichiers à la fois.

Cette question pourrait être intéressante:

https://stackoverflow.com/q/265073/175849

6
Steve-o