>백엔드 개발 >PHP 튜토리얼 >mysqli 함수를 사용하여 PHP에서 mysql에 연결할 때 경고: mysqli::real_connect(): (hy000/1040): ..._php 인스턴스

mysqli 함수를 사용하여 PHP에서 mysql에 연결할 때 경고: mysqli::real_connect(): (hy000/1040): ..._php 인스턴스

WBOY
WBOY원래의
2016-05-16 19:58:411556검색

배경: 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_CLIENT_SSL - 使用 SSL 加密
  • MYSQL_CLIENT_COMPRESS - 使用压缩协议
  • MYSQL_CLIENT_IGNORE_SPACE - 允许函数名后的间隔
  • MYSQL_CLIENT_INTERACTIVE - 允许关闭连接之前的交互超时非活动时间

返回值

如果成功,则返回一个 MySQL 连接标识,失败则返回 FALSE。

提示和注释

注释:脚本一结束,到服务器的连接就被关闭,除非之前已经明确调用 mysql_close() 关闭了。
提示:要创建一个持久连接,请使用 mysql_pconnect() 函数。

例子

<&#63;php
$con = mysql_connect("localhost","mysql_user","mysql_pwd");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
// 一些代码...
mysql_close($con);
&#63;>
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.