我正在编写一个 PHP-GTK Twitter 客户端,当我进行 OAuth 身份验证时,我需要打开浏览器向用户显示带外令牌。在此期间,我还需要打开一个对话框并运行,以便用户输入该令牌。
问题是,在 Linux 上,当我打开浏览器时xdg-open URL
,PHP 似乎会暂停,直到我关闭浏览器窗口。我需要 PHP 来启动浏览器,然后打开对话框。我可以让 PHP 只执行命令并继续执行脚本吗?
在 *nix 上,您可以启动外部程序并使用&
操作符继续(即不阻塞)。您还必须将 STDOUT 和 STDERR 重定向到某个地方才能使其正常工作。
所以你会做这样的事情:
exec("xdg-open \"$url\" > /dev/null 2>&1 &");
在 Windows 上还有一种方法可以做到,我会在找到时添加。
编辑
您可以使用以下代码段实现与 Windows 相同的功能:
$WshShell = new COM("WScript.Shell");
$oExec = $WshShell->Run($commandToExecute, 0, FALSE);
第二行中传递的FALSE
参数是阻止它阻塞的部分。