control the number of times a php class is loaded with certain parameters
<p>I have a php class that connects to certain devices via ssh. 
I would like to add logic to control the number of connections, per device. 
This is what my class constructor looks like:</p>

<pre><code>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-&gt;_hostname = $hostname;
        $this-&gt;_password = $password;
        $this-&gt;_username = $username;

    } // __construct
</code></pre>

<p>I've read some other posts like : <a href="http://stackoverflow.com/questions/4302495/how-to-save-a-variable-at-application-level-in-php">How to save a variable at application level in php?</a></p>

<p>and I guess I just want to confirm the following: </p>

<ol>
<li>I think database would be better than file because of scenarios where multiple sessions are trying to write / update the class counter.</li>
<li>the class contructor and destructors are the best / only place to add this type of logic. </li>
</ol>

<p>The only thing is that currently, I don't have a database associated with my app - so I hate to add this "dependency" but it does seem like the best way to go.  If you have any comments / suggestions, please let me know. </p>

<p>Thanks. </p>

<p><strong>EDIT 1:</strong></p>

<p>One additional question that comes up with adding the logic in my constructor is the following...
Assuming I have the following logic (pseudocode)</p>

<pre><code>  public function __construct($hostname) 
  {
     if (!  ok_to_connect($hostname)  )
     {
         exit;
     }
  }

  public function ok_to_connect($hostname)
  {
    $filelist = glob($counterslocation.$hostname.'*.tmp');

    if ( count($filelist)  &lt; 4) {
        $handle = fopen($counterslocation.$hostname.rand(1,4).".tmp", "r");
        return true;
    }       
    else {
        return false;
    }
   }
</code></pre>

<p>In the case where i already have 4 active connections, wouldn't calling exit() in my constructor still envoke the destructor?  This means that the destructor will try to delete one of the temp files, even though the ok_to_connect() function didn't actually create a file.  I guess i can have the ok_to_connect() method set a public variable in the class, and have the destructor check this before deleting any files.
Is this the best way to go?</p>
