我正在編寫一個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