0

这更像是一个操作系统问题而不是 PHP 问题,但无论如何:

我希望通过运行ffmpegshell_exec()上传的视频转换为不同的格式。我想知道ffmpeg上传多个视频时操作系统如何处理多个命令。

下面是一些示例代码,使其更明确:

<?php

  $filePath = upload($_FILE['video']); //get filepath from uploaded file

  shell_exec('ffmpeg ' . $filePath . ' video.mp4'); //simple ffmpeg conversion

?>

假设操作系统是基于 linux 的。

  • 操作系统是否会为每个命令创建一个线程,直到它使用上面的代码耗尽内存?
  • 我假设创建某种队列是处理这些呼叫的更好方法,但这是否意味着系统一次只能转换一个视频?
  • 如果我希望系统并行转换多个视频怎么办,以及在系统负担过重之前了解系统可以处理的最大并行线程数的好方法是什么?

谢谢。

4

1 回答 1

1

PHP 将为每个shell_exec执行的单独命令分叉一个单独的进程。

将这些工作排队是个好主意。所以会在后台运行它们,而不是延迟 PHP 的响应,直到上传和 ffmpeg 作业都完成。PHP 没有任何内置方法来执行此操作,但有许多库,例如Gearman,用于管理此类任务。

对于视频转换等 CPU 密集型作业,一个好的经验法则是每个物理 CPU 内核一个进程。

于 2013-01-16T18:41:27.400 回答