php database permanent connection
A permanent database connection refers to a connection that is not closed when the script finishes running. When a request for a permanent connection is received. PHP will check whether there is already an identical permanent connection (that has been opened previously). If it exists, the connection will be used directly; if it does not exist, a new connection will be established. The so-called "same" connection refers to a connection to the same host using the same username and password.
Readers who do not fully understand the work of a web server and distributed load may misunderstand the role of persistent connections. In particular, a persistent connection does not provide the ability to establish a "user session" on the same connection, nor does it provide the ability to effectively establish a transaction. In fact, strictly speaking, a permanent connection does not provide any special features that a non-persistent connection does not provide.
Why?
This has to do with the way the web server works. There are three ways a web server can use PHP to generate web pages.
The first method is to use PHP as a "shell". Running this way, PHP spawns and terminates a PHP interpreter thread for each PHP page request made to the web server. Because this thread ends with each request, any resources utilized in this thread (such as connections to a SQL database server) will be closed with the end of the thread. In this case, using permanent connections won't change anything - because they aren't permanent at all.
The second and most common method is to use PHP as a module in a multi-process web server. This method currently only works with Apache. For a multi-process server, the typical feature is that there is a parent process and a group of child processes running in coordination, among which the child process actually generates the web page. Whenever a client makes a request to the parent process, the request is passed to the child process that has not been occupied by other client requests. This means that when the same client makes a request to the server for the second time, it may be handled by a different child process. After opening a permanent connection, all subsequent pages that request the SQL service can reuse the established SQL Server connection.
The last method is to use PHP as a plugin for a multi-threaded web server. Currently PHP 4 already supports ISAPI, WSAPI and NSAPI (under Windows environment), which allows PHP to be used as a multi-threaded web server such as Netscape FastTrack (iPlanet), Microsoft's Internet Information Server (IIS) and O'Reilly's WebSite Pro. plugin. The behavior of permanent connections is essentially the same as the multi-process model described previously. Note that PHP 3 does not support SAPI.
If a permanent connection doesn’t have any additional features, what are the benefits of using it?
The answer is very simple - efficiency. Persistent connections are more efficient when clients make very frequent connection requests to the SQL server. The criteria for frequent connection requests depend on many factors. For example, the type of database, whether the database service and the web service are on the same server, how the SQL server loads the load, etc. But we at least know that when connection requests are frequent, permanent connections will significantly improve efficiency. It allows each child process to perform only one connection operation in its life cycle, instead of making a connection request to the SQL server every time a page is processed. This means that each child process will establish its own independent permanent connection to the server. For example, if 20 different child processes run a script that establishes a permanent connection to a SQL server, there are actually 20 different permanent connections established to the SQL server, one for each process.
Note that if the number of permanently connected child processes exceeds the set database connection limit, the system will have some defects. If the database has a limit of 16 simultaneous connections, and in the case of a busy session, 17 threads try to connect, then one thread will fail to connect. If at this time, an error occurs in the script that prevents the connection from being closed (such as an infinite loop), the 16 connections to the database will be quickly affected. Consult the documentation for using your database for information on how to handle abandoned and idle connections.
There are some special issues to pay attention to when using permanent connections. For example, when using a table lock in a permanent connection, if the script cannot release the table lock for any reason, subsequent scripts using the same connection will be permanently blocked, requiring the httpd service or database service to be restarted. In addition, when using transaction processing, if the script ends before the transaction blocking occurs, the blocking will also affect the next script using the same connection. No matter what the situation, you can register a simple cleanup function to open the data table lock or roll back the transaction by using the register_shutdown_function() function. Or a better way is not to use permanent connections in scripts that use data table locks or transaction processing, which can fundamentally solve this problem (of course you can also use permanent connections in other places).
The following is an important summary. Persistent connections are designed to establish a one-to-one distribution for common connections. This means that you must be able to guarantee that the behavior of the script does not change when replacing a persistent connection with a non-persistent connection. Using a persistent connection will (very) likely change the efficiency of the script, but not its behavior!

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

If you are an experienced PHP developer, you might have the feeling that you’ve been there and done that already.You have developed a significant number of applications, debugged millions of lines of code, and tweaked a bunch of scripts to achieve op

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.
