Hanya pertanyaan yang agak sederhana berkaitan dengan PDO dibandingkan dengan MySQLi.
Dengan MySQLi, untuk menutup koneksi Anda dapat melakukan:
$this->connection->close();
Namun dengan PDO itu menyatakan Anda membuka koneksi menggunakan:
$this->connection = new PDO();
tetapi untuk menutup koneksi yang Anda atur null
.
$this->connection = null;
Apakah ini benar dan apakah ini benar-benar membebaskan koneksi PDO? (Saya tahu itu null
berfungsi seperti yang diatur .) Maksud saya dengan MySQLi Anda harus memanggil fungsi ( close
) untuk menutup koneksi. Apakah PDO semudah = null
memutuskan sambungan? Ataukah ada fungsi untuk menutup koneksi?
Jawaban:
Menurut dokumentasi Anda benar ( http://php.net/manual/en/pdo.connections.php ):
Perhatikan bahwa jika Anda menginisialisasi objek PDO sebagai koneksi persisten, itu tidak akan secara otomatis menutup koneksi.
sumber
Note that if you initialise the PDO object as a persistent connection it will not automatically close the connection
Tetapi jika koneksi tetap ada dan saya secara eksplisit memanggil NULL di atasnya sebelum skrip berakhir, itu akan ditutup bahkan jika itu persisten, benar?sumber
Ini lebih dari sekedar mengatur koneksi ke null. Itu mungkin yang dikatakan oleh dokumentasi, tapi itu bukan kebenaran untuk mysql. Koneksi akan bertahan sedikit lebih lama (Saya pernah mendengar 60-an, tetapi tidak pernah mengujinya)
Jika Anda ingin di sini penjelasan lengkapnya lihat komentar ini di koneksi https://www.php.net/manual/en/pdo.connections.php#114822
Untuk memaksa menutup koneksi, Anda harus melakukan sesuatu seperti
sumber
Saya membuat kelas turunan untuk memiliki instruksi yang lebih mendokumentasikan diri daripada "$ conn = null;".
Jadi saya dapat memanggil kode saya antara:
sumber
closeConnection
seharusnya tidak menyadari bahwa ia perlu menyalin referensi ke variabel alih-alih menugaskan objek. Dengan kata lain, cara Anda untuk mencoba membuat kode fungsi PDO dekat memiliki efek samping yang buruk, membuatnya tidak dapat diandalkan. Satu-satunya cara untuk melakukannya adalahcloseConnection
dengan memeriksa berapa banyak referensi ke objek PDO yang ada dalam kode, dan melempar jika ada lebih dari 1.Contoh lengkapnya, dengan custom class PDO2.
sumber