在PHP exec之后继续执行脚本

时间:2017-02-27 12:04:15

标签: php shell

我使用PHP exec()函数来执行.bat文件,但我遇到了问题。整个站点挂起等待exec命令的响应。我的.bat文件包含以下内容...... mstsc /v:192.168.1.1 IP地址就是一个例子。

我的代码

我已经浏览了一下并尝试将' > /dev/null &'添加到我的脚本中,但添加此内容会阻止脚本一起执行。继承了我的完整代码:(这是在我的laravel控制器中)

public function startRemoteDesktop(Request $request)
{
    $name = $request->input('name');
    $ip_address = $request->input('ip');
    $path = public_path() . '/files/bat_files/'. $name . '.bat';
    $contents = 'mstsc /v:' . $ip_address;

    if(File::exists($path))
    {
        return 'RDP Connection Currently In Use!';
    }

    File::put($path, $contents);
    exec($path);
    File::delete($path);

    exec($path . ' > /dev/null &'); //Alternative exec command that ive tried
}

注意

没有' > /dev/null &'添加到我的exec代码它工作正常,但很明显它挂起意味着我不能用PHP做任何其他事情,直到我关闭RDP连接。

问题

如何从我的exec命令(或其他php命令)中打开RDP,而不会让所有PHP脚本暂停执行?

1 个答案:

答案 0 :(得分:0)

我发现使用popen($path, 'r');允许PHP继续执行脚本而无需等待当前.bat文件发送响应