Отключение от ssh2_connect()

#php #ssh #disconnect

#php #ssh #отключение

Вопрос:

Я подключился через ssh2 с помощью ssh2_connect сервера, но я не вижу никакого метода на страницах руководства о том, как я должен разорвать соединение.

Я не совсем любитель ждать завершения скрипта перед отключением.

Могу ли я использовать fclose ? Это звучит неправильно…

Комментарии:

1. Я не знаю ответа, но из того, что я получил, читая документы, fclose() следует использовать в сочетании с вызовами ssh2_exec() и ssh2_shell() , но я не думаю, что это применимо к ssh2_connect() .

Ответ №1:

Это может сделать только unset($connection) ваша переменная connection или ssh2_exec($connection, 'exit'); .

Вероятно, вы могли бы сделать следующее, чтобы быть еще более убедительным!

 ssh2_exec($connection, 'exit');
unset($connection);
  

Комментарии:

1. 1, unset() может быть выполнено, только если ssh2_exec() не является ресурсом (или возвращает false ).

2. Альтернативно: ssh2_exec($connection, 'exit') or unset($connection); следует это сделать.

3. ssh2_exec( $conn, 'exit' ) и ssh2_exec( $conn, 'logout' ) не завершайте сеанс. Все, что они делают, это выходят из временной оболочки, используемой для выполнения команды. Сеанс SSH все еще существует.

Ответ №2:

Если бы вы использовали phpseclib, чистую реализацию PHP SSH, вы могли бы сделать $ssh->disconnect() . деструктор phpseclib вызывает его, но вы также можете вызвать его вручную.

Ответ №3:

ssh2_exec('logout') должно прервать вашу сессию…

Комментарии:

1. В случае, когда выполнение команды разрешено. Я хочу отключить TCPIP, а не использовать протокол, потому что в итоге я могу получить Warning: ssh2_exec() [function.ssh2-exec]: Unable to request command execution on remote host

2. system('kill -9 ' . getmypid()) каким бы отвратительным оно ни было, в данном случае оно работает.