The Tool Desk
Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →A PHP connection that reports Connection timed out has usually failed before MySQL completed its handshake. Check routing, the server’s listening address, port 3306, firewalls, security groups and host-based grants before changing PHP code. A different message—Lost connection to MySQL server—means a connection existed and then dropped, so investigate idle and data-transfer timeouts instead.
Need a server to try this on? Antihost offers Linux VPS plans with NVMe storage, full root access and a 14-day free trial.
Identify which timeout you actually have
The wording of the error determines where to start. Do not treat every timeout as a PHP setting.
As an Amazon Associate I earn from qualifying purchases.
Quick wins for a faster PC:
Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Clear out junk files and repair common Windows errorsFree Scan →| Observed message or symptom | What it means | First place to investigate |
|---|---|---|
Connection timed out while opening the connection |
The TCP connection or MySQL handshake did not complete. | Routing, DNS, bind address, port 3306, firewall rules, cloud security groups, or a connect-timeout that is too short. |
Lost connection to MySQL server |
A session was established and later dropped. | Idle-session limits, stale persistent sockets, server restarts, or network interruptions. |
Lost connection to MySQL server during query (commonly error 2013) |
The connection failed while data was being exchanged. | net_read_timeout, net_write_timeout, query duration, packet transfer and network stability. |
| Immediate “access denied” response | The server is reachable, but authentication or the allowed client host is wrong. | The MySQL account’s host restriction, username, password or authentication configuration. |
An actual connect timeout cannot be fixed by increasing wait_timeout: that variable applies only after a session has connected and then remained idle. Conversely, increasing the initial connect timeout will not keep an already-open, inactive connection alive.
Run one test from the PHP server
Test from the same machine, container or private network where PHP runs. A successful test from your laptop does not prove that the web server can reach the database host.
#1 Best Overall
- BLUE LIGHT BLOCKING GLASSES: Our blue light glasses for women boast UV400 protection, blocking harmful blue rays from computer screens. With these bluelight glasses women, you can enjoy gaming, reading, or watching TV with no worries of eye strain.
- EYE RELIEF: Our blue light glasses are engineered to reduce blurry vision or strain caused by prolonged screen time. These womens blue light glasses aid in better sleep by preventing blue light from disrupting your natural sleep cycle, helping you fall asleep faster and enjoy a more restful night's sleep, making them the perfect christmas present.
- COMFORTABLE: Crafted from durable material, our trendy blue light glasses for woman or blue light glasses men ensure long-lasting comfort. The high-transmittance lenses accessories, gamer gifts for men, help keep your eyes relaxed. Perfect stocking stuffers, gifts for gamers men, christmas gifts for men, halloween costumes.
- LIGHTWEIGHT: These clear blue light glasses feature a lightweight frame, meaning they’ll stay comfy for long-term wear. Perfect as blue blockers glasses for women or mens blue light glasses, these non-prescription fake glasses for men can be worn throughout the day. The blue light blocking glasses women feature polycarbonate HD lenses, which are anti-reflective and restore true color.
- WORRY-FREE PURCHASE: If you experience any issues, our support team is ready to assist you quickly. These are the perfect costume glasses for cosplay dressing up.
- Run the MySQL command-line client with the database hostname or address, account and password prompt:
mysql -h <db-host> -u <user> -p --connect-timeout=30 - If the command also times out, stop changing PHP. Fix the listener, route, firewall or security-group path first.
- If it connects, run a simple query such as
SELECT 1;, then repeat the test from the PHP process. A command-line success narrows the problem to PHP configuration, credentials, connection reuse or the PHP host’s runtime environment. - Record whether the failure is immediate or occurs only after minutes or hours. Timing is a strong clue: immediate failures are normally reachability or handshake problems; delayed failures are normally idle or active-transfer problems.
MySQL Shell expresses its connect timeout in milliseconds and uses a 10,000 ms default. Other clients, including the classic command-line client and the C API, use seconds. Always check the unit used by the particular client rather than copying a number between tools.
Make sure MySQL is listening on the remote interface
Check the effective bind_address
bind_address determines which network interfaces accept MySQL connections. Inspect the value on the database host instead of assuming a default. The MySQL 8.0 server documentation reports a wildcard (*) default, while packaged distributions may place an explicit 127.0.0.1 in their configuration. A loopback-only value accepts local connections but rejects a remote PHP server.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Since MySQL 8.0.13, a comma-separated list of addresses is supported. Do not combine a wildcard with other addresses in that list; an invalid combination prevents the server from starting. If the server fails to start after editing the setting, inspect the MySQL error log, correct the address list and restart.
Rank #2
- WINDEX GAMING WIPES: effortlessly clean all your gaming gear and gaming electronics in one easy step with our new Windex Gaming Wipes
- AMMONIA FREE: our ammonia-free formula is safe to use on all of your favorite gaming equipment like consoles, headsets, controllers, screens, keyboards, and more
- PRE-MOISTENED WIPES: each wipe instantly removes dust, dirt, and stubborn smudges and fingerprints leaving a streak-free shine
- ANTI-STATIC: great for cleaning and wiping down your gaming gear and electronics leaving behind no visible residue
- COMPACT RESEALABLE PACKAGE: store your pack of Windex Gaming Wipes anywhere in your home for whenever a quick and easy wipedown is needed
On the database host, inspect the running configuration and listening sockets with your operating system’s service and socket tools. Confirm that MySQL is bound to the database host’s private or public address on TCP port 3306, not just to 127.0.0.1. If the host has several interfaces, bind only to the interface required by the application where possible.
Change the setting safely
- Open the MySQL server configuration file: commonly
my.cnfon Unix-like systems ormy.inion Windows. - Under the
[mysqld]section, setbind_addressto the intended interface or supported address list. - Restart the MySQL service and verify that it starts successfully.
- Repeat the client test from the PHP host.
Do not expose a database on every interface merely to make a test pass. Prefer a private network address and restrict inbound access to the PHP server’s address or security-group identity.
Check port 3306, routing and firewalls
MySQL may be listening correctly while packets are blocked between the two hosts. Check every control point in the path:
Recommended Free Tools
Rank #3
- Ergonomic & Adjustable Design: Fight "text neck" and improve your posture. Designed for comfort, it offers an adjustable height (7.1in-8.5in) (1.4in adjustable range) and angle (5°-85°) Please note: cell phone stand is only 9 inches tall—the length of a standard pencil
- Without blocking subtitles Perfect for office desk Tiktok Face Time Zoom video—this is the ultimate kitchen desk essential for phones! Perfect viewing experience while reducing neck back strain, A must-have for gamers streamers desk, and anyone who values both style and support!
- Sleek & Stable Design fits Otterbox Case: Say goodbye to bent cables, tangles, and tip-overs! LISEN’s stylish adjustable desk phone holder features a built-in charging hole and smart cable management, keeping your phone secure and your workspace clutter-free cool gadgets for men
- ANTI-SLIP DESIGN free hands: The under 10.00 items easy gadgets back and the bottom of this kitchen essentials for women are fully covered by anti-skid silicone, which LISEN stand up desk decor can provide maximum protection device from any scratches and slides
- Your Perfect Viewing Companion:If your product arrives damaged or breaks within 365 days, reach out to LISEN for a quick and hassle-free solution. Struggling with assembly, like tightening the screw? We’ve got your back! Your experience matters to us. (Product including: phone Holder stand*1, screw*1, hexagon screwdriver*1, specification*1)
- The database host’s operating-system firewall must allow TCP port 3306 from the PHP host.
- A cloud security group, network ACL or provider firewall must allow the same source and destination.
- Any VPN, container network, NAT rule or private-subnet route must carry traffic between the hosts.
- DNS used by PHP must resolve the database name to the reachable address, not to a loopback, obsolete or public address that the network blocks.
- Outbound rules on the PHP host must permit a connection to the database address and port.
Test the port from the PHP host with your platform’s TCP connectivity utility. A refused connection generally means the host is reachable but nothing is accepting that port (or a firewall is actively rejecting it); a silent timeout usually indicates filtering, an incorrect route or an unreachable address. Neither result is repaired by a longer PHP timeout.
Verify the MySQL account is allowed from the PHP host
MySQL accounts include a host component. An account that works as 'user'@'localhost' may still be rejected when PHP connects from 10.0.0.5. Have a database administrator confirm that the account is granted for the PHP server’s actual source address or an appropriately narrow network range, and that the account is permitted to connect to the required database.
Use the address observed by the database server, which can differ from the PHP machine’s private address when NAT or a proxy is involved. After the listener and firewall tests pass, an incorrect host grant normally produces an authentication error rather than a timeout. Keep the grant as narrow as the deployment allows; do not use a broad wildcard host merely to bypass troubleshooting.
Rank #4
- Easy Installation: Our gaming lights have been designed to enhance your entertainment experience. Simply position the led light bar next to your TV or game console to create a game room environment with ease. They come with USB power and a 60 inch cord for direct mounting and mobility
- Audio Syncing & Extensive Mode: The built-in high-sensitivity music sensor allows you to sync the TV led lights to your favorite music. Lights react and move to the beat of music, film and game audio, creating an incredible immersive sound and light experience – and all without the need for an additional hub. You can choose from 64+ patterns, including strobe, illusion, jump, energy, gradient, running, chasing, fluttering mode etc. Each mode can be applied to different scenes
- 64+ Chasing IC+RGB & W Effect: The independent control design of IC+RGB and white all-in-one multifunctional rgbw led bar lights monitor backlight allows you to easily switch the led lights for desk between IC+RGB and white to enjoy a variety of lighting effects, you can choose white lighting mode with high brightness for better illumination when working, etc. Choose IC+RGB lighting mode when you need to create an entertaining atmosphere for the light show, 16 million colours of Color changing rgb light bar let you dance to the beat and create a dynamic party atmosphere
- Dynamic and Dimmable Lights: 1%-full brightness free brightness adjustment gives you the flexibility to adjust dimmable led light bar for room decorations or a variety of occasions
- USB Powered: USB light bars for room can be powered by powernank, usb charger, TV, Monitor, laptop PC mainframe, making behind TV led lighting bar easy to install in any location.TV led lights are powered by the TV usb interface / PC mainframe, can be turned on/off synchronously with TV / PC
Understand MySQL’s server-side timeout variables
| Variable | Applies to | Important behavior | How to inspect |
|---|---|---|---|
connect_timeout |
Initial handshake | Default is 10 seconds. A high-latency or multi-proxy path may need 15–30 seconds, but a timeout does not fix an unreachable port. | SHOW VARIABLES LIKE 'connect_timeout'; |
wait_timeout |
Idle sessions | Default is eight hours of inactivity. Since MySQL 8.0.24, the server can tell the client that it disconnected the session because of inactivity. | SHOW VARIABLES LIKE 'wait_timeout'; |
net_read_timeout |
Reading data during an active exchange | Controls how long the server waits for more data; it is not an idle-connection setting. | SHOW VARIABLES LIKE 'net_read_timeout'; |
net_write_timeout |
Writing data during an active exchange | Controls stalled output while a query result is being sent. | SHOW VARIABLES LIKE 'net_write_timeout'; |
Inspect all four values on the target server before changing them. A server-side change normally belongs under [mysqld] in my.cnf or my.ini, followed by a restart. A temporary session change, where permitted by your account, is useful for diagnosis but disappears when that session ends.
When increasing connect_timeout is reasonable
Raise it modestly when the route is known to be valid but the handshake regularly exceeds the default because of latency or several proxies. Increasing it cannot overcome a wrong address, blocked port, missing route or account restriction. Fix those conditions first.
When wait_timeout is the relevant setting
If the first request works but a reused connection fails after a long quiet period, compare the elapsed idle time with wait_timeout. The server may have closed the socket while PHP still held a connection object. Reconnect when the next operation reports a dropped session; do not simply make every idle timeout extremely long without considering connection and resource limits.
Best Value
- Compatible with Wide Screens - To ensure compatibility with the dual monitor mount, your each monitor must meet three conditions at the same time: First, computer screens size range: 13 to 32 inches. Second, screen weight range: 4.4 to 19.8 lbs. Third, the back of the monitor screen must have VESA mounting holes with a pitch of 75x75mm or 100x100mm.
- Regarding the compatibility with desks - Your desk must meet three conditions at the same time: First, desk material: Only wooden desks are recommended, plastic or glass desks cannot be used. Second, desk thickness range: 0.59" - 3.54". Third, the bottom of the desk should not have any cross beams or panels, as this will interfere with installation. We recommend carefully checking that your desk and monitors meets all above conditions before purchasing.
- Dual C-Clamp Hold - Worried your dual monitors might wobble or slip? Our upgraded base uses a larger platform plus a dual C-clamp structure to lock the dual monitor arm firmly to your desk. Each arm safely keeps your screens steady while you type, click and game—no shaking, no sliding, just a clean and secure setup you can trust every day. It also provides Grommet Mounting installation choice, both options ensure stable and secure fixation for your 0.59" - 3.54" desk.
- Full-Motion Adjustment For Comfortable View - Pull the screen closer when you’re deep in a spreadsheet, push it back to watch videos, or rotate to portrait for coding — moving everything smoothly with just one hand. The monitor stand offers +85°/-50° tilt, ±90° swivel and 360° rotation. Raise your monitor up to 15.75″ to support a healthy sitting posture. Whether you’re working from home, gaming through the night, or switching between video calls and documents, getting the screens to your natural line of sight helps relieve neck, shoulder and back strain so you can stay focused longer with less fatigue.
- Keep Your Desk Organized: By lifting both screens off the desktop, this dual monitor stand opens up valuable space for your keyboard, notebook, docking station or a simple, clutter-free work area. Built-in cable management guides wires along the arms, keeping cords out of sight and out of the way. Enjoy a tidy, modern workstation that looks as good as it feels to use.
When to examine network-transfer timeouts
For failures during a large or slow result, check net_read_timeout and net_write_timeout, along with query execution, packet size and network stability. These settings concern active transfer and will not solve a failure that occurs before login.
Set the mysqli connect timeout correctly in PHP
With mysqli, initialise the handle, set options, and then call mysqli_real_connect(). MYSQLI_OPT_CONNECT_TIMEOUT is measured in seconds and must receive an integer. Passing a string has caused bogus timeout behavior in PHP bug reports.
<?php
$host = 'db.internal.example';
$user = 'app_user';
$password = getenv('DB_PASSWORD');
$database = 'app_database';
$port = 3306;
$db = mysqli_init();
if ($db === false) {
throw new RuntimeException('mysqli_init failed');
}
$connectTimeout = 30; // integer seconds
mysqli_options($db, MYSQLI_OPT_CONNECT_TIMEOUT, $connectTimeout);
// Available since PHP 7.2.0; applies to command-result reads after connection.
$readTimeout = 60;
mysqli_options($db, MYSQLI_OPT_READ_TIMEOUT, $readTimeout);
$connected = mysqli_real_connect(
$db,
$host,
$user,
$password,
$database,
$port
);
if (!$connected) {
$message = mysqli_connect_error();
throw new RuntimeException('Database connection failed: ' . $message);
}
$result = mysqli_query($db, 'SELECT 1');
if ($result === false) {
throw new RuntimeException('Database test query failed: ' . mysqli_error($db));
}
?>
Set MYSQLI_OPT_CONNECT_TIMEOUT after mysqli_init() and before mysqli_real_connect(); setting it after the connection has already been opened cannot change that handshake. MYSQLI_OPT_READ_TIMEOUT addresses a stall while waiting for command results, not an unreachable server. Log the error code and elapsed time, but never log the database password.
Handle persistent and stale connections
Persistent connections can retain a socket that MySQL has already closed because of inactivity, a server restart or a network device timeout. The next request may then report a lost connection even though a fresh connection would work.
- Use a normal non-persistent connection while diagnosing the problem.
- If persistent connections are required, treat “server has gone away” or a lost-connection error as a signal to discard the handle and establish a new one.
- Do not assume that a PHP connection object proves the server still considers the session alive.
- Exercise the connection with a lightweight query before a long transaction when your framework’s connection pool can return stale handles.
Reconnect logic should be bounded: retry a small number of times, with backoff, and fail the request clearly if the database remains unavailable. Retrying every query indiscriminately can duplicate writes; only retry operations that are safe for your transaction design.
A practical troubleshooting sequence
Case 1: The command-line client times out
- Resolve the database hostname from the PHP host and confirm it points to the intended address.
- Confirm MySQL is running and listening on the required interface and TCP port.
- Allow TCP 3306 through the host firewall and any cloud security group, limited to the PHP source.
- Check private-network routes, VPNs, NAT and container networking.
- After packets reach MySQL, verify the account’s host grant.
Case 2: The command-line client connects, but PHP times out
- Confirm PHP uses the same hostname, port, DNS resolver and network namespace as the successful test.
- Check that the mysqli option is set before
mysqli_real_connect(). - Pass an integer to
MYSQLI_OPT_CONNECT_TIMEOUT, not a quoted number. - Check PHP error logs for the exact mysqli error and compare the measured delay with the configured timeout.
- Disable persistent connections temporarily and test again.
Case 3: The first request works, later requests fail
- Compare the idle interval with
wait_timeout. - Look for the MySQL 8.0.24-or-later inactivity-disconnect message in the client or application log.
- Reconnect when a stale handle is detected, or use non-persistent connections.
- Check for database restarts, failovers and intermediate load balancers that terminate idle sockets.
Case 4: Failure occurs during a query
- Identify whether the message says it was lost “during query” rather than during connection setup.
- Inspect
net_read_timeoutandnet_write_timeoutand compare them with the query’s transfer time. - Check result size, packet limits, server load and network interruptions.
- Use
MYSQLI_OPT_READ_TIMEOUTfor the PHP-side wait for command results, setting it deliberately rather than masking a stalled server.
Use a layered fix instead of one oversized timeout
| Layer | Fix when | Typical action | What it cannot fix |
|---|---|---|---|
| Network and listener | The initial client test times out. | Correct DNS, route, bind_address, firewall and security-group rules. |
Idle sockets or slow result reads after a successful login. |
| MySQL account | The host is reachable but authentication is denied. | Allow the PHP host explicitly and verify credentials and database permissions. | A blocked port or wrong route. |
| Server handshake | The route works but handshakes occasionally exceed 10 seconds. | Review connect_timeout and latency; increase it modestly if justified. |
An unreachable or filtered destination. |
| PHP connect option | Only the PHP client gives up too quickly. | Set integer-second MYSQLI_OPT_CONNECT_TIMEOUT between initialisation and mysqli_real_connect(). |
Server-side firewall, listener or grants. |
| Idle-session handling | Reused connections fail after inactivity. | Check wait_timeout, avoid stale persistent handles and reconnect safely. |
A first-connection timeout. |
| Active-transfer handling | Connections drop while reading or writing results. | Review net timeouts, read timeout, query behavior and network stability. | Loopback-only binding or a closed port. |
Production checklist
- Run the connectivity test from the PHP execution environment, not only from an administrator workstation.
- Record the exact error text, error number, host, port and elapsed time.
- Verify the effective
bind_addressand listening socket on the database host. - Permit only the PHP host or application network to reach TCP 3306.
- Confirm the MySQL account’s host component matches the address seen by the server.
- Inspect
connect_timeout,wait_timeout,net_read_timeoutandnet_write_timeoutbefore editing values. - Set mysqli options before connecting and pass timeout values as integers.
- Use
MYSQLI_OPT_READ_TIMEOUTonly for post-connect result waits; it is not a reachability fix. - Close or replace stale persistent connections and make retries safe for writes.
- Keep database credentials out of source control and logs, and avoid exposing MySQL broadly to the internet.
The reliable order is simple: prove the route, prove that MySQL is listening, prove that the account is allowed from the PHP host, then tune client and server timeouts for the latency and workload you actually have. This prevents a longer timeout from hiding a firewall or binding error and separates handshake failures from dropped sessions.
Free tools Windows power users keep installed
One-click scans. No signup required.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.




