J'écris un lecteur MP3 basé sur un navigateur très simple en PHP . Une partie de ce projet nécessite que chaque fichier MP3 soit converti en fichier WAV . Il y a une fonction en 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')
Disons donc qu'il y a 10 personnes différentes qui finissent de télécharger une chanson en même temps. 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 pourrait-il gérer la conversion de 10 chansons différentes en même temps ou n'en fait-il qu'une seule à la fois?
la source
Réponses:
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 le script PHP en même temps. Chaque appel PHP
shell_exec
sera effectué indépendamment des autres. J'ai moi-même unshell_exec
script qui montre certaines informations à mes utilisateurs pour certaines images et cela se fait indépendamment des autres scripts PHP exécutésshell_exec
.Il y a une limite au nombre d'utilisateurs simultanés que PHP peut gérer, 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 CPU, par exemple en convertissant des vidéos, l'utilisation efficace des commandes dépendra alors de la quantité de RAM dont vous disposez et de la puissance du CPU dont vous disposez. Pour quelqu'un avec 64 Mo de RAM et un 80486, ce serait mal d'essayer de convertir deux vidéos et 10 chansons. Cela surchargerait le système. Pour quelqu'un avec un serveur Core 2 Duo et 4 Go de RAM, je pense que la conversion de plusieurs chansons serait un jeu d'enfant.
Donc, fondamentalement, oui, Linux peut gérer plusieurs commandes shell simultanées, spécialement à partir de PHP, mais les performances globales dépendraient des ressources du serveur (CPU, RAM, disque dur, etc.)
la source
Si vous deviez prendre en charge un grand nombre d'utilisateurs, vous devrez rechercher une autre méthode pour gérer le processus de conversion.
Par exemple, vous configurerez probablement un système de planification des travaux de telle sorte que vous publiez des demandes sur le système pour convertir un fichier et interroger le système pour le statut d'achèvement. Le système de planification prendrait des tâches dans une file d'attente et dirait d'effectuer jusqu'à quatre conversions de fichiers à la fois.
Cette question pourrait être intéressante:
/programming//q/265073/175849
la source