[PHP-NOTES] note 130560 added to function.register-shutdown-function
[email protected] ("Anonymous") Sat, 29 Nov 2025 19:11:10 +0000
| Newsgroups | php.notes |
|---|---|
| Message-ID | <[email protected]> |
Here is a great example of using shutdown.
I am using a database class for 20 years now. Starting with mysql_connect of course. then transformed it to mysqli as time went by. It was a real transition at some point.
It recently came to my attention that die() and exit() will not handle mysql_close() $con->close properly. __destruct might not be called.
so a good way around this is register the shutdown function so mysql will always close.
function __destruct(){
$this->close();
}
function close() {
// this function closes the database
if($this->connected){
if($this->use_mysqli){
$this->connected = false;
return $this->con->close();
} else {
$this->connected = false;
return mysql_close($this->con);
}
}
}
function __construct($host, $user, $pass, $db){
global $_CONFIG;
if(isset($_CONFIG['use_mysql']) && $_CONFIG['use_mysql']){
$this->use_mysqli = false;
} else {
$this->use_mysqli = function_exists("mysqli_connect");
}
$this->database($host, $user, $pass, $db);
register_shutdown_function([$this, 'close']);
}
By Jacob Slomp
----
Server IP: 45.112.84.4
Probable Submitter: 45.112.84.18 (proxied: 162.157.229.111)
----
Manual Page -- https://php.net/manual/en/function.register-shutdown-function.php
Edit -- https://main.php.net/note/edit/130560
Del: integrated -- https://main.php.net/note/delete/130560/integrated
Del: useless -- https://main.php.net/note/delete/130560/useless
Del: bad code -- https://main.php.net/note/delete/130560/bad+code
Del: spam -- https://main.php.net/note/delete/130560/spam
Del: non-english -- https://main.php.net/note/delete/130560/non-english
Del: in docs -- https://main.php.net/note/delete/130560/in+docs
Del: other reasons-- https://main.php.net/note/delete/130560
Reject -- https://main.php.net/note/reject/130560
Search -- https://main.php.net/manage/user-notes.php