0

私は PHP-GTK Twitter クライアントを作成しています。OAuth 認証を行うときは、ブラウザーを開いて帯域外トークンをユーザーに表示する必要があります。この間、ユーザーがそのトークンを入力できるように、ダイアログ ボックスを開いて操作できるようにする必要もあります。

問題は、Linux で でブラウザーを開くとxdg-open URL、ブラウザー ウィンドウを閉じるまで PHP が一時停止しているように見えることです。ブラウザを起動してからダイアログを開くには PHP が必要です。PHP でコマンドを実行し、スクリプトを続行することはできますか?

4

1 に答える 1

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);

2 行目に渡されるFALSE引数は、ブロックを停止する部分です。

于 2011-10-13T22:27:24.490 に答える