PHP: выполнить команду, а затем продолжить? - PullRequest
0 голосов
/ 14 октября 2011

Я пишу Twitter-клиент PHP-GTK, и когда я выполняю аутентификацию OAuth, мне нужно открыть браузер, чтобы показать пользователю токен вне диапазона.Мне также нужно, чтобы в это время диалоговое окно было открыто и работало, чтобы пользователь мог ввести этот токен.

Проблема в том, что в Linux, когда я открываю браузер с xdg-open URL, PHP, кажется, делает паузупока я не закрою окно браузера.Мне нужен PHP, чтобы запустить браузер, а затем открыть диалоговое окно.Могу ли я заставить PHP просто выполнить команду и продолжить работу со сценарием?

1 Ответ

3 голосов
/ 14 октября 2011

В * nix вы можете запустить внешнюю программу и продолжить (т.е. не блокировать), используя оператор &. Вы также должны перенаправить STDOUT и STDERR куда-нибудь, чтобы это работало правильно.

Итак, вы бы сделали что-то вроде этого:

exec("xdg-open \"$url\" > /dev/null 2>&1 &");

Существует также способ сделать это в Windows, который я добавлю, когда найду его.

EDIT

Вы можете добиться того же в Windows, используя следующий фрагмент:

$WshShell = new COM("WScript.Shell");
$oExec = $WshShell->Run($commandToExecute, 0, FALSE);

Аргумент FALSE, передаваемый во второй строке, является частью, которая препятствует блокировке.

...