#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())
каким бы отвратительным оно ни было, в данном случае оно работает.