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

use*_*637 11 php command-line ffmpeg

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

shell_exec('ffmpeg -i inputSong.mp3 outputSong.wav')
Run Code Online (Sandbox Code Playgroud)

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

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

Lui*_*ado 13

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

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

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

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


Ste*_*e-o 6

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

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

这个问题可能很有趣:

/sf/ask/18555141/