gpt4 book ai didi

PHP ssh2_connect() 实现超时

转载 作者:可可西里 更新时间:2023-11-01 12:35:05 25 4
gpt4 key购买 nike

我正在使用 PHP ssh2 库,并且只需执行以下操作:

$ssh = ssh2_connect($hostname, $port);

问题是我想设置超时,即 5 秒后停止尝试连接。据我所知,ssh2 库不支持 native 连接超时。如何实现超时包装器?

最佳答案

我知道这是一个旧线程,但问题仍然存在。因此,这是它的解决方案。

ssh2_connect() 使用 socket_connect()socket_connect 依赖于 php ini 配置参数 default_socket_timeout,默认设置为 60 秒 (http://php.net/manual/en/filesystem.configuration.php#ini.default-socket-timeout)

因此,解决我们问题的最简单方法是在运行时将 ini 设置更改为我们想要的值,然后再更改回 ini 文件中设置的值,这样我们就可以避免影响软件的其他部分。在下面的示例中,新值设置为 2 秒。

    $originalConnectionTimeout = ini_get('default_socket_timeout');
ini_set('default_socket_timeout', 2);

$connection = ssh2_connect('1.1.1.1');

ini_set('default_socket_timeout', $originalConnectionTimeout);

您可以通过阅读 libssh2 的源代码 (https://github.com/libssh2/libssh2) 找到更多关于 ssh2 for php 工作原理的详细信息。

关于PHP ssh2_connect() 实现超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10730556/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com