服务器可以同时处理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,硬盘驱动器等)
如果您要支持大量用户,则必须研究处理转换过程的替代方法。
例如,您可能会设置一个作业调度系统,以便将请求发布到系统以转换文件并轮询系统的完成状态。 调度系统将从队列中获取任务,并且一次最多执行四次文件转换。
这个问题可能很有意思: