Myślę, że dzieje się tak dlatego, że kiedy zamykasz połączenie z bazą danych po raz pierwszy, zapominasz:
unset($connection);
A potem, gdy ponownie spróbujesz połączyć się z bazą danych, psuje się, ponieważ nadal jest ustawione na zamknięte połączenie.