2015-09-29 3 views
0

У меня проблема с запуском команды из сценария PHP. Команда, которую я пытаюсь запустить,ЗАПУСТИТЬ ПРОФЕССИОНАЛЬНЫЙ В ОСНОВЕ WINDOWS

echo y | plink -ssh -N -D 9999 [email protected] -pw admin -v

Дело в том, что команда работает, но сценарий не замерзает до исполнения plink команды, которые я не хочу. Я также попытался (работает в фоновом режиме), это:

START /MIN "cmd.exe" /C "plink -ssh -N -D 9999 [email protected] -pw admin"

и я вижу, минимизируется plink работает, и как только я закрываю его, сценарий продолжается.

Я также попытался:

START /B /MIN "cmd.exe" /C "plink -ssh -N -D 9999 [email protected] -pw admin"

и он делает то же самое, но показывает выход в PHP скрипт.

это функция:

function create_tunnel($ip,$user,$pass,$port) 
{ 
    exec('START /min cmd /c "echo y | plink -ssh -N -D '.$port.' '.$user.'@'.$ip.' -pw '.$pass.' -v" > nul'); 
} 

Что я должен сделать, чтобы выполнить эту команду, и пусть PHP скрипт продолжит выполнение? В linux это было бы очень просто, я бы просто использовал команду screen.

Спасибо.

+0

Вы пробовали 'START/b'? –

+0

Вы проверили, нет ли призрачного процесса plink? – Paul

+0

@PanamaJack да, просто вывести команду и ждать ... Пол нет, нет процесса призраков – Damian

ответ

0

Попробуйте Symfony Process компонент:

$process = new Process('ls -lsa'); 
$process->start(); 

while ($process->isRunning()) { 
    // waiting for process to finish 
} 

echo $process->getOutput(); 
+0

Мне нужно включить специальный класс или что-то еще? или он находится в библиотеках PHP? также я использую WINDOWS, если бы я был в LINUX, я бы просто использовал экран – Damian

+0

Это крошечная отдельная часть известной php-рамки Symfony. Это кроссплатформенность, очевидно, и хорошо протестирована. Вы можете установить его через Composer или загрузить с официального репо, а затем добавить файл 'vendor/autoload.php' в свой скрипт и он будет готов к использованию. – ankhzet

+0

Кроме того, вы можете посмотреть на его реализацию для раскрытия деталей выполнения команды async. Там используется функция «popen» php вместо «exec», afaik. – ankhzet

Смежные вопросы