배경: mysql을 mysqli로 교체할 때 연결이 너무 많은 것으로 나타났습니다. 실제로는 그렇지 않았습니다. php에서 sock 파일의 위치를 옮겼기 때문입니다. 완전히 수정되어 나타났습니다. 연결이 너무 많습니다. mysql의 show processlist에서 실제로 연결이 있는 것을 찾지 못했습니다. 실제로 tshark를 사용하여 패키지를 캡처했는데 볼 수 있는 것 같습니다. justwinit.cn/post/7458/) 요청이 없었지만 mysqli 클라이언트가 자체적으로 보고한 것 같습니다. 이 문제는 작지만 오랫동안 작업한 후 Php를 다시 설치하고 싶었습니다. 경로가 잘못 작성되었음을 발견했습니다. 동시에 mysqli 클라이언트는 연결이 너무 많다는 오류 메시지를 표시하여 방향이 잘못되었습니다. 다음과 같습니다:
[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导致。
수정 후 php-fpm을 다시 시작하는 것을 잊지 마세요:
[root@iZ25z0ugwgtZ etc]# service php-fpm restart Gracefully shutting down php-fpm . done Starting php-fpm done
______________문제 해결 포인트는 다음과 같습니다_________________
경고: mysqli::real_connect(): (hy000/1040): 연결이 너무 많습니다:
시나리오: mysql을 수동으로 컴파일 및 설치하고 설치 위치를 지정하면 php가 localhost 모드에서 mysql에 연결됩니다.
원인 분석: 수동 컴파일 및 설치 후 모든 mysql 파일은 지정된 디렉터리 또는 데이터 디렉터리 아래에 있습니다. 기본적으로 PHP는 이 sock 파일을 찾기 위해 /temp/mysql.sock만 찾습니다. 결과적으로 sock 파일을 찾을 수 없습니다.
해결책:
1. 양말 파일에 대한 소프트 링크를 만듭니다
ln -s /data/mysqldb/mysql.sock /tmp/mysql.sock;
또는
2. php의 기본 mysql.sock 연결 주소를 수정합니다
mysql.default_socket=/data/mysqldb/mysql.sock
3. TCP 소켓을 사용하여 연결합니다
mysql('127.0.0.1','사용자 이름','비밀번호');
PHP mysql_connect() 함수를 소개하겠습니다
정의 및 사용법
mysql_connect() 함수는 비영구 MySQL 연결을 엽니다.
문법
mysql_connect(server,user,pwd,newlink,clientflag)
매개변수 | 설명 |
---|---|
서버 |
선택사항. 연결할 서버를 지정합니다. "hostname:port"와 같은 포트 번호 또는 로컬 호스트의 경우 ":/path/to/socket"과 같은 로컬 소켓 경로를 포함할 수 있습니다. PHP 지시문 mysql.default_host가 정의되지 않은 경우(기본 경우) 기본값은 'localhost:3306'입니다. |
사용자 | 선택사항. 사용자 이름. 기본값은 서버 프로세스 소유자의 사용자 이름입니다. |
비밀번호 | 선택사항. 비밀번호. 기본값은 빈 비밀번호입니다. |
새링크 | 선택사항. 동일한 매개변수를 사용하여 mysql_connect()를 두 번째로 호출하면 새 연결이 설정되지 않지만 이미 열려 있는 연결의 ID가 반환됩니다. new_link 매개변수는 이 동작을 변경하고 mysql_connect()가 이전에 동일한 매개변수로 호출된 경우에도 mysql_connect()가 항상 새 연결을 열도록 합니다. |
클라이언트 플래그 |
선택사항. client_flags 매개변수는 다음 상수의 조합일 수 있습니다.
|
返回值
如果成功,则返回一个 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); ?>