0

我在 XAMPP 环境中的 Windows 机器上运行 PHP。我使用 AJAX 请求将电影从 MP4 转换为 OGG

function convertMovie(movieName) {
    $.ajax({
       url: 'movieManagement.php?queryType=convertMovie&value='+movieName,
       async: true
    });
}

对于 PHP 代码

function convertMovie($value) {
    $command = "psexec -d php ".getcwd()."\\movieConverter.php ".$value." > nul 2<&1";
    shell_exec($command);
}

在电影转换器中,代码类似于

//some more code here
if ($fileExtension === 'mp4' || $fileExtension === 'MP4') {
            $newFileName = $serverAddress . $tempFileName . "ogg";
            $executeCommand = 'psexec -d '.getcwd() . '\\ffmpeg -i "' . $oldFileName . '" "' . $newFileName . '" > '.$serverAddress.'nul 2>$1';
        }
        shell_exec($executeCommand);

现在我的问题是每次我破坏这个浏览器时都会像永远一样等待 ajax 调用返回,但是,如果我在命令 shell 中单独运行这些命令,它们就可以正常工作。我只希望电影转换在后台工作并且浏览器保持免费

我知道这个问题至少被问了 1000 次,但我找不到具体的答案。对不起我的无知。

4

1 回答 1

0

您可以在后台运行该进程(无论如何在 Linux 上),方法是使用以下命令结束它&

shell_exec($command . ' &');
于 2012-10-05T02:38:37.763 回答