#php #linux #php-gtk
#php #linux #php-gtk
Вопрос:
Я пишу клиент Twitter на PHP-GTK, и когда я выполняю аутентификацию OAuth, мне нужно открыть браузер, чтобы показать пользователю внеполосный токен. Мне также нужно, чтобы диалоговое окно было открыто и работало в течение этого времени, чтобы пользователь мог ввести этот токен.
Проблема в том, что в Linux, когда я открываю браузер с xdg-open URL
помощью PHP, кажется, останавливается, пока я не закрою окно браузера. Мне нужен PHP для запуска браузера, затем откройте диалоговое окно. Могу ли я заставить PHP просто выполнить команду и продолжить работу со сценарием?
Комментарии:
1. Поможет ли многопоточность gr.php.net/pcntl . У меня нет опыта, и я не знаю, легко ли это или хорошо!
Ответ №1:
В * nix вы можете запустить внешнюю программу и продолжить (т. Е. Не Блокировать) с помощью amp;
оператора. Вам также необходимо перенаправить STDOUT и STDERR куда-нибудь, чтобы это работало правильно.
Итак, вы бы сделали что-то вроде этого:
exec("xdg-open "$url" > /dev/null 2>amp;1 amp;");
Существует также способ сделать это в Windows, который я добавлю, когда найду его.
Редактировать
Вы можете добиться того же в Windows, используя следующий фрагмент:
$WshShell = new COM("WScript.Shell");
$oExec = $WshShell->Run($commandToExecute, 0, FALSE);
FALSE
Аргумент, переданный во второй строке, является частью, которая останавливает его блокировку.