How to close connection with PDO in PHP
This article will introduce to you how to close the connection with PDO in PHP. It has certain reference value. Friends in need can refer to it. I hope it will be helpful to everyone.
When we wrote the mysql connection operation by hand before, we usually used mysql_close() to close the database connection. However, in modern development, the general use of frameworks will cause us to ignore the underlying encapsulation, and most frameworks have defaulted to using PDO for database operations. So, do you know how PDO closes the data connection?
Official Description
To close the connection, you need to destroy the object to ensure that all remaining references to it are deleted. You can assign a NULL value to the object variable. If you don't do this explicitly, PHP will automatically close the connection at the end of the script.
$pdo = new PDO('mysql:host=127.0.0.1;port=3306;dbname=blog_test', 'root', ''); $pdo = null;
The official documentation makes it very clear, that is, just assign NULL to the PDO object. But are things really that simple?
Actual test
Let’s do a test like this. Under normal circumstances, we will not close the database connection directly after opening it, but will need to perform some operations.
$pdo = new PDO('mysql:host=127.0.0.1;port=3306;dbname=blog_test', 'root', ''); $stmt = $pdo->prepare('SELECT * FROM zyblog_test_user'); $stmt->execute(); $pdo = null; sleep(60);
After running the above code, we use show full processlist in the database; to view the connection process, we will find that the current connection is not closed immediately, but will not be closed until 60 seconds later, that is, after the page execution is completed. . It seems that $pdo = null; did not execute successfully.
Actually, this situation has been explained in the official documents, but people may not pay attention to it. [The object needs to be destroyed to ensure that all remaining references to it are deleted]. In the above code, the \$stmt precompiled SQL statement function calls the method in the $pdo object, creating a reference dependency between them. Relationship, in this case, directly giving $pdo = null; has no effect. We need to assign $stmt to null as well.
$pdo = new PDO('mysql:host=127.0.0.1;port=3306;dbname=blog_test', 'root', ''); $stmt = $pdo->prepare('SELECT * FROM zyblog_test_user'); $stmt->execute(); $stmt = null; $pdo = null; sleep(60);
mysqli test
So will there be this problem when using the default extension component of mysqli, that is, using close() in the mysqli object to close the database connection? Or test it directly with code. (The mysql extension is outdated and is not recommended. If you want to encapsulate the database operation class yourself or write a small Demo, it is better to use mysqli)
$conn = new mysqli('127.0.0.1', 'root', '', 'blog_test'); $result = $conn->query('SELECT * FROM zyblog_test_user'); $stmt = $conn->prepare("SELECT * FROM zyblog_test_user"); $stmt->execute(); $conn->close(); sleep(60);
After running the above code, we check the connection in the database The process will not see the connection that is still executing. In other words, calling the close() method in mysqli can directly close the database connection immediately.
Summary
In fact, today’s content is also the information in a Note on the official document about database connection. A master discovered this problem a long time ago and shared it, but most people don't know this problem at all, and many people even don't know that PDO can close the database connection. While the framework brings us convenience, it also encapsulates many things so well that many friends don’t care about the underlying content. However, when you move to a higher level, these underlying things will often become your hindrance.
Test code:
https://github.com/zhangyue0503/dev-blog/blob/master/php/202008/source/PHP%E4%B8%ADPDO%E5%85%B3%E9%97%AD%E8%BF%9E%E6%8E%A5%E7%9A%84%E9%97%AE%E9%A2%98.php
Recommended learning: php video tutorial
The above is the detailed content of How to close connection with PDO in PHP. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

PHP 8.4 brings several new features, security improvements, and performance improvements with healthy amounts of feature deprecations and removals. This guide explains how to install PHP 8.4 or upgrade to PHP 8.4 on Ubuntu, Debian, or their derivati

Visual Studio Code, also known as VS Code, is a free source code editor — or integrated development environment (IDE) — available for all major operating systems. With a large collection of extensions for many programming languages, VS Code can be c

JWT is an open standard based on JSON, used to securely transmit information between parties, mainly for identity authentication and information exchange. 1. JWT consists of three parts: Header, Payload and Signature. 2. The working principle of JWT includes three steps: generating JWT, verifying JWT and parsing Payload. 3. When using JWT for authentication in PHP, JWT can be generated and verified, and user role and permission information can be included in advanced usage. 4. Common errors include signature verification failure, token expiration, and payload oversized. Debugging skills include using debugging tools and logging. 5. Performance optimization and best practices include using appropriate signature algorithms, setting validity periods reasonably,

A string is a sequence of characters, including letters, numbers, and symbols. This tutorial will learn how to calculate the number of vowels in a given string in PHP using different methods. The vowels in English are a, e, i, o, u, and they can be uppercase or lowercase. What is a vowel? Vowels are alphabetic characters that represent a specific pronunciation. There are five vowels in English, including uppercase and lowercase: a, e, i, o, u Example 1 Input: String = "Tutorialspoint" Output: 6 explain The vowels in the string "Tutorialspoint" are u, o, i, a, o, i. There are 6 yuan in total

This tutorial demonstrates how to efficiently process XML documents using PHP. XML (eXtensible Markup Language) is a versatile text-based markup language designed for both human readability and machine parsing. It's commonly used for data storage an

Static binding (static::) implements late static binding (LSB) in PHP, allowing calling classes to be referenced in static contexts rather than defining classes. 1) The parsing process is performed at runtime, 2) Look up the call class in the inheritance relationship, 3) It may bring performance overhead.

What are the magic methods of PHP? PHP's magic methods include: 1.\_\_construct, used to initialize objects; 2.\_\_destruct, used to clean up resources; 3.\_\_call, handle non-existent method calls; 4.\_\_get, implement dynamic attribute access; 5.\_\_set, implement dynamic attribute settings. These methods are automatically called in certain situations, improving code flexibility and efficiency.

PHP and Python each have their own advantages, and choose according to project requirements. 1.PHP is suitable for web development, especially for rapid development and maintenance of websites. 2. Python is suitable for data science, machine learning and artificial intelligence, with concise syntax and suitable for beginners.
