Background: Replace mysql with Mysqli appears, there are too many connections, but it is not actually the case. The reason is that I moved the sock file location of php. Because these socket modifications were not completely modified, too many connections appeared. Show processlist from mysql. I didn't find that there is really a connection. In fact, I used tshark to capture the package and I guess I can see it (http://justwinit.cn/post/7458/). No request was sent, but it was probably reported by the mysqli client itself. Although this problem is small, I have been working on it for a long time and want to reinstall Php. I found that the path was written wrong and the mysqli client prompted an error message that there were too many connections, causing the wrong direction. As follows:
[root@iZ25z0ugwgtZ etc]# grep -r "mysql.sock" ./ ./php.ini:pdo_mysql.default_socket=/data/runsock/mysqlsock/mysql.sock ./php.ini:;mysql.default_socket = /tmp/mysql.sock ./php.ini:mysql.default_socket = /data/runsock/mysqlsock/mysql.sock ./php.ini:mysqli.default_socket = /data/runsock/mysql.sock //这个位置被挪动到,/data/runsock/mysqlsock/mysql.sock导致。
Remember to restart php-fpm after modification:
[root@iZ25z0ugwgtZ etc]# service php-fpm restart Gracefully shutting down php-fpm . done Starting php-fpm done
_______________The troubleshooting points are as follows_______________________________
warning: mysqli::real_connect(): (hy000/1040): too many connections in:
Scenario: Manually compile and install mysql, and specify the installation location, php connects to mysql in localhost mode
Cause analysis: After manual compilation and installation, all mysql files are in the specified directory or data directory. By default, PHP will only look for /temp/mysql.sock to find this sock file, so it will As a result, the sock file cannot be found.
Solution:
1. Make a soft link to the sock file
ln -s /data/mysqldb/mysql.sock /tmp/mysql.sock;
or
2. Modify the default mysql.sock connection address of php
mysql.default_socket=/data/mysqldb/mysql.sock
3. Use tcp socket to connect
mysql('127.0.0.1','username','passwod');
Let me introduce to you the PHP mysql_connect() function
Definition and usage
The mysql_connect() function opens a non-persistent MySQL connection.
Grammar
mysql_connect(server,user,pwd,newlink,clientflag)
Parameters | Description |
---|---|
server |
Optional. Specifies the server to connect to. Can include a port number, such as "hostname:port", or a path to a local socket, such as ":/path/to/socket" for localhost. If the PHP directive mysql.default_host is not defined (the default case), the default value is 'localhost:3306'. |
user | Optional. username. The default value is the username of the server process owner. |
pwd | Optional. password. The default value is an empty password. |
newlink | Optional. If mysql_connect() is called a second time with the same parameters, no new connection will be established, but the ID of the already open connection will be returned. The parameter new_link changes this behavior and causes mysql_connect() to always open a new connection, even when mysql_connect() has been called previously with the same parameters. |
clientflag |
Optional. The client_flags parameter can be a combination of the following constants:
|
返回值
如果成功,则返回一个 MySQL 连接标识,失败则返回 FALSE。
提示和注释
注释:脚本一结束,到服务器的连接就被关闭,除非之前已经明确调用 mysql_close() 关闭了。
提示:要创建一个持久连接,请使用 mysql_pconnect() 函数。
例子
<?php $con = mysql_connect("localhost","mysql_user","mysql_pwd"); if (!$con) { die('Could not connect: ' . mysql_error()); } // 一些代码... mysql_close($con); ?>