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