【问题标题】:Shell_exec locking browserShell_exec 锁定浏览器
【发布时间】:2012-10-05 02:30:22
【问题描述】:

我在 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 次,但我找不到具体的答案。对不起,我的无知。

【问题讨论】:

标签: php shell-exec


【解决方案1】:

您可以在后台运行该进程(无论如何在 Linux 上),以 &amp; 结束它:

shell_exec($command . ' &');

【讨论】:

  • 我希望我能,但我在 Windows 上,我从没想过只是一个简单的任务,因为在这个操作系统中分叉一个进程可能会这么困难
  • Windows 对于大多数事情来说并不是理想的服务器。
  • @AdamSack 我认为它不是大多数事情的理想操作系统(嗯,至少对于开发而言)。
猜你喜欢
  • 1970-01-01
  • 2012-04-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-06
  • 2011-07-15
相关资源
最近更新 更多