1

次のコードを使用して ssh 接続を作成しました。

    $connection = ssh2_connect($masterIp, 22);

    // authenticating the remote server connection with credentials
    ssh2_auth_password($connection, $user, $password);

    // secure ftp connection to create directory if not exist
    $sftp = ssh2_sftp($connection);

操作が完了したら、$connection、$sftp を閉じる必要があります。接続を安全に閉じるにはどうすればよいですか。unset() 関数を使用できますか?

4

3 に答える 3

3

はい、unset で十分です。

PHP では、リソースがスコープ外になるか設定が解除されると、それらは自動的に閉じられます (拡張機能が標準の PHP モデルを壊さない限り、リソースは閉じられるべきです)。

(まあ、それはガレージで収集されるだけなので、リソースへのすべての参照が破棄されたときに閉じられます)

于 2012-06-07T08:52:00.833 に答える
2

SSH セッションが適切に閉じられていることを確認したい場合は、純粋な PHP SSH 実装である phpseclib の使用を検討してください。デストラクタでパケットを閉じるために必要なすべての SSH パケットを送信します。使用したくない場合は、$ssh->disconnect() を使用します。

コードの移植性も大幅に向上します。

于 2012-06-07T17:17:42.617 に答える
1

SSH 接続は、閉じられるまで開かれます。

ssh2_exec($connection, 'exit;');

明示的なssh2_closeコマンドはありません。

unsetネットワーク接続も終了する可能性は十分にあります。少なくとも PHP プロセスが終了すると、接続は自動的に閉じられるはずです。

于 2012-06-07T08:53:13.410 に答える