在PHP exec之后继续执行脚本

在PHP exec之后继续执行脚本,php,shell,Php,Shell,我正在使用PHPsexec()函数执行.bat文件,但我遇到了一个问题。整个站点挂起,等待exec命令的响应。我的.bat文件包含以下内容mstsc/v:192.168.1.1IP地址就是一个例子 我的代码 我环顾四周,尝试将'>/dev/null&'添加到脚本中,但添加此项会阻止脚本一起执行。这是我的完整代码:(这在我的laravel控制器中) 注意 如果没有将>/dev/null&添加到我的exec代码中,它可以正常工作,但显然它会挂起,这意味着在关闭RDP连接之前,我不能用PHP做任何其他

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

我的代码

我环顾四周,尝试将
'>/dev/null&'
添加到脚本中,但添加此项会阻止脚本一起执行。这是我的完整代码:(这在我的laravel控制器中)

注意

如果没有将
>/dev/null&
添加到我的exec代码中,它可以正常工作,但显然它会挂起,这意味着在关闭RDP连接之前,我不能用PHP做任何其他事情

问题


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

我发现使用
popen($path,'r')
允许PHP在不等待当前
.bat
文件发送响应的情况下继续执行脚本

您所说的“添加此项将停止脚本一起执行”是什么意思。将
&
添加到命令末尾将使您在后台运行该命令,执行命令后,您期望得到什么?@HassanAhmed当远程桌面应用程序启动“我的网页”时,在关闭之前不会再执行任何PHP命令,您如何使用
>/dev/null&
编写命令,可以用full命令更新示例吗code@HassanAhmed我更新了我的问题请问你的服务器操作系统是什么?很好,但是记住删除.bat文件,在.bat文件中包含代码。因为如果你不等到它结束,你会删除php中的.bat文件,并且你不会在下一次php运行中检测到它是否在运行。所以你修复了它?如果人民帮你解决了,我将删除我的答案。
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
}