If you don't do an explicit disconnect, the module should do it for you when the handle goes out of scope or as part of the garbage collection process when the script ends. However, that doesn't always happen. I had a script connecting to a pervasive db and didn't have an explicit disconnect. Latter I learned that connections weren't being disconnected which caused the db to lockup when it reached the max connections.
The next time this problem comes up connect to the mysql cli or you can use phpmyadmin to run the following command.
show full processlist;
That will show you the connections and processes being executed.