Minulla on tämmöinen hauskan näköinen koodipläjäys:
<?php class DB { var $usr; var $pwd; var $db; var $server; var $query; // FUNKTIO AVAA YHTEYDEN TIETOKANTAAN function open($usr, $pwd, $db, $server) { $this->usr = $usr; $this->pwd = $pwd; $this->db = $db; $this->server = $server; $this->link = mysql_connect($this->server, $this->usr, $this->pwd); if ( ! $this->link ) die("SQL server not OnLine"); mysql_select_db($this->db) or die ("Couldn't open database"); register_shutdown_function(array($this, 'close')); // väitän vastoin järjestelmää, että vika on tässä //register_shutdown_function($this->close); // <= ei toimi } // FUNKTIO SUORITTAA KYSELYN TIETOKANNASSA function query($query) { $this->query = $query; $result = mysql_query($this->query, $this->link); return $result; } // FUNKTIO SULKEE YHTEYDEN TIETOKANTAAN function close() { mysql_close($this->link); // <= järjestelmä väittää vian olevan tässä } } ?>
Ja kommentit koodissa kertookin kaiken. Missä siis vika kun ei itse keksi???
Entäs jos laitat: register_shutdown_function('$this->close'); Muistaakseni noissa, missä annetaan callback funktio, funktion nimi annetaan merkkijonona.
Oleellisin eli virheilmoitus puuttuu. Kokeile kuitenkin:
register_shutdown_function(array(&$this, "close"));
Jokatapauksessa tuo sulkeminen tuohon tyyliin on aivan turhaa koska php-sulkee yhteyden automaattisesti skriptin suorittuksen päätyttyä.
Hmm...jostain syystä tuo scripti lähti toimimaan mitään tekemättä...(?!?!)
Eikä tuo mitään haittaa vaikka yhteydet manuaalisesti sulkeekin.
Aihe on jo aika vanha, joten et voi enää vastata siihen.