2011-10-13 251 views
0

我正在編寫一個PHP-GTK Twitter客戶端,當我進行OAuth身份驗證時,我需要打開瀏覽器以向用戶顯示帶外令牌。我還需要在此期間打開並運行一個對話框,以便用戶輸入該令牌。PHP:執行命令,然後繼續?

問題是,在Linux上,當我用xdg-open URL打開瀏覽器時,PHP似乎暫停,直到我關閉瀏覽器窗口。我需要PHP來啓動瀏覽器,然後打開對話框。我可以讓PHP執行命令並繼續使用腳本嗎?

+0

多線程可以幫助http://gr.php.net/pcntl。我沒有經驗,不知道它是容易的還是好的! – Melsi

回答

3

在* 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參數在第二行傳遞的是阻塞停止它的一部分。

+0

完美的作品,謝謝! – soren121