我有一个通过 ssh 连接到某些设备的 php 类。我想添加逻辑来控制每个设备的连接数。这是我的类构造函数的样子:
public function __construct($hostname, $password, $username = "", $timeout = 10)
{
set_include_path(get_include_path() . PATH_SEPARATOR . '/var/www/phpseclib');
include_once('Net/SSH2.php');
$this->_hostname = $hostname;
$this->_password = $password;
$this->_username = $username;
} // __construct
我读过其他一些帖子,例如:如何在 php 中保存应用程序级别的变量?
我想我只是想确认以下内容:
- 我认为数据库会比文件更好,因为在多个会话尝试写入/更新类计数器的情况下。
- 类构造函数和析构函数是添加此类逻辑的最佳/唯一位置。
唯一的问题是,目前,我没有与我的应用程序关联的数据库 - 所以我讨厌添加这种“依赖项”,但这似乎是最好的方法。如果您有任何意见/建议,请告诉我。
谢谢。
编辑1:
在我的构造函数中添加逻辑时出现的另一个问题如下......假设我有以下逻辑(伪代码)
public function __construct($hostname)
{
if (! ok_to_connect($hostname) )
{
exit;
}
}
public function ok_to_connect($hostname)
{
$filelist = glob($counterslocation.$hostname.'*.tmp');
if ( count($filelist) < 4) {
$handle = fopen($counterslocation.$hostname.rand(1,4).".tmp", "r");
return true;
}
else {
return false;
}
}
在我已经有 4 个活动连接的情况下,在我的构造函数中调用 exit() 是否仍会调用析构函数?这意味着析构函数将尝试删除其中一个临时文件,即使 ok_to_connect() 函数实际上并未创建文件。我想我可以让 ok_to_connect() 方法在类中设置一个公共变量,并让析构函数在删除任何文件之前检查它。这是最好的方法吗?