我正在编写一个PHP-GTK Twitter客户端,当我进行OAuth身份验证时,我需要打开浏览器以向用户显示带外令牌。我还需要在此期间打开并运行一个对话框,以便用户输入该令牌。PHP:执行命令,然后继续?
问题是,在Linux上,当我用xdg-open URL
打开浏览器时,PHP似乎暂停,直到我关闭浏览器窗口。我需要PHP来启动浏览器,然后打开对话框。我可以让PHP执行命令并继续使用脚本吗?
我正在编写一个PHP-GTK Twitter客户端,当我进行OAuth身份验证时,我需要打开浏览器以向用户显示带外令牌。我还需要在此期间打开并运行一个对话框,以便用户输入该令牌。PHP:执行命令,然后继续?
问题是,在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
参数在第二行传递的是阻塞停止它的一部分。
完美的作品,谢谢! – soren121
多线程可以帮助http://gr.php.net/pcntl。我没有经验,不知道它是容易的还是好的! – Melsi