服务器可以同时处理shell命令吗?

我正在用PHP编写一个非常简单的基于浏览器的MP3播放器。 该项目的一部分要求将每个MP3文件转换为WAV文件。 PHP中有一个名为shell_exec的函数,它允许您通过shell执行命令。 对于我的项目,只要有人将歌曲上传到他们的帐户,就会执行以下命令:

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

因此,假设有10个不同的人在同一时间完成上传歌曲。 Linux服务器是同时执行10个shell命令还是一次只执行一个?

如果服务器可以同时处理多个shell命令,服务器是否能够同时处理10首不同的歌曲,或者只能一次处理一首?

如果您是通过PHP(或任何其他可以访问shell命令的语言)来完成它们,它们将单独完成,这意味着如果10个用户偶然同时使用PHP脚本,它们将同时完成。 通过shell_exec每个PHP调用都将独立于其他调用完成。 我自己有一个shell_exec脚本,它向我的用户显示某些图像的某些信息,这是通过shell_exec独立于其他PHP执行的脚本完成的。

PHP可以处理的并发用户数量有限,但如果您使用它,则取决于您的Web服务器,PHP配置文件和MySQL。 我知道这个数字同时大于100。

当使用CPU密集型命令(例如转换video)时,命令的有效使用将取决于您拥有多少RAM以及您拥有多少CPU功率。 对于拥有64 MB RAM和80486的人来说,尝试转换两个video和10首歌曲会很糟糕。 这会使系统过载。 对于拥有Core 2 Duo服务器和4 GB RAM的人来说,我认为转换几首歌会是小菜一碟。

所以基本上,是的,Linux可以处理多个同时的shell命令,特别是来自PHP,但整体性能将取决于服务器的资源(CPU,RAM,硬盘驱动器等)

如果您要支持大量用户,则必须研究处理转换过程的替代方法。

例如,您可能会设置一个作业调度系统,以便将请求发布到系统以转换文件并轮询系统的完成状态。 调度系统将从队列中获取任务,并且一次最多执行四次文件转换。

这个问题可能很有意思:

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