>백엔드 개발 >PHP 튜토리얼 >PHP 경고: mysqli_query():솔루션

PHP 경고: mysqli_query():솔루션

WBOY
WBOY원래의
2023-06-25 08:13:201957검색

PHP 기술의 지속적인 개발과 사용으로 인해 때때로 몇 가지 문제와 오류가 발생할 수 있습니다. 그 중 PHP에서 제공하는 MySQLi 함수 라이브러리는 개발자들이 MySQL 데이터베이스를 운영하기 위해 흔히 사용하는 도구이다. mysqli_query() 함수를 사용할 때 "PHP 경고: mysqli_query(): (HY000/2006): MySQL 서버가 사라졌습니다."라는 일반적인 오류 메시지가 나타날 수 있습니다. 이 오류 메시지는 개발 프로세스를 방해할 수 있습니다. 오류를 발견하면 가능한 한 빨리 해결책을 찾아야 PHP 코드가 제대로 작동할 수 있습니다.

아래에서는 몇 가지 가능한 솔루션을 제공합니다.

  1. PHP 코드 확인

이 오류가 발생하면 먼저 PHP 코드를 검토해야 합니다. MySQLi 연결문 사이의 간격이 너무 긴지, MySQLi 연결이 유지되지 않는지 확인하세요. 많은 양의 데이터를 처리할 때 이 오류가 발생할 확률이 더 높습니다.

연결 시간 제한을 너무 짧게 설정하면 MySQL 데이터베이스가 연결을 닫고 연결 프로세스 중에 브라우저에 오류 메시지를 표시합니다. 대부분의 경우 연결 시간 제한을 길게 설정하면 이 오류의 빈도가 줄어듭니다.

해결책:

MySQLi에서 ping() 함수를 사용하여 연결 상태를 유지하고 MySQLi 연결이 정상인지 확인할 수 있습니다. 이 방법을 사용하면 예기치 않은 연결 종료 문제를 쉽게 해결할 수 있습니다.

코드에 다음 구문을 사용해야 합니다.

// Mysqli连接语句
$conn = mysqli_connect($servername, $username, $password, $dbname);

// 判断数据库连接是否可用
if (mysqli_ping($conn)) {
    echo 'MySQL connection is still active!';
} else {
    echo 'MySQL connection is dead.';
}
  1. 시간 제한을 늘립니다.

데이터 양이 많은 경우 시간 제한을 늘려 연결 안정성을 향상할 수 있습니다. 다음 코드 조각을 사용할 수 있습니다.

// 设置超时时间 (单位为秒)
ini_set('mysqlI.connect_timeout', 3600);
ini_set('mysqlI.default_socket_timeout', 3600);
  1. MySQL 서버 구성 확인

오류 메시지에는 실제 오류 메시지뿐만 아니라 데이터베이스 오류 메시지도 포함될 수 있습니다. 데이터베이스 서버 로그에 액세스하면 오류에 대한 자세한 정보를 얻을 수 있습니다.

MySQL 데이터베이스는 시작할 때 /etc/my.cnf 또는 /etc/mysql/my.cnf와 같은 구성 파일을 로드합니다. 이 구성 파일에 다음 매개변수를 추가해야 합니다.

max_allowed_packet = 128M
wait_timeout = 28800
innodb_flush_log_at_trx_commit = 2
innodb_buffer_pool_size = 1G

이 중 max_allowed_packet은 단일 SQL 쿼리 문에서 허용되는 최대 전송 크기(바이트)를 설정할 수 있습니다. 이 매개변수의 기본값은 4MB이며 조정 가능합니다. 따라서 실제 필요에 따라. wait_timeout 매개변수는 MySQL 연결의 유휴 시간을 초 단위로 설정할 수 있습니다. 이 시간이 너무 길면 서버 성능이 저하되며, 시간 초과로 인해 연결이 끊어질 수 있습니다. innodb_flush_log_at_trx_commit 및 innodb_buffer_pool_size 매개변수는 MySQL 연결의 성능과 안정성을 향상할 수 있으며 필요에 따라 적절하게 조정될 수 있습니다.

  1. MySQL 데이터베이스 확인

위의 방법을 모두 시도했지만 여전히 문제를 해결할 수 없다면 최종적으로 MySQL 데이터베이스 자체에 문제가 있는지 확인할 수 있습니다. 예를 들어 진단 및 복구를 위해 다음과 같은 MySQL의 내장 도구를 사용할 수 있습니다.

mysqlcheck -o -A

이 명령은 MySQL 데이터베이스에서 일관성 검사 및 복구를 수행합니다. 이 명령을 실행하려면 관리자 권한이 필요하며, 이 명령을 실행하려면 루트 또는 이에 상응하는 권한이 있는 사용자여야 합니다.

요약

위는 "PHP 경고: mysqli_query(): (HY000/2006): MySQL 서버가 사라졌습니다." 오류가 발생할 때 시도할 수 있는 해결 방법입니다. MySQLi는 PHP 개발에서 매우 일반적으로 사용되는 도구입니다. 이러한 오류가 발생하면 코드 개발에 큰 문제가 발생하지만 위의 방법을 사용하면 여전히 문제를 복구하고 코드의 안정성과 신뢰성을 향상시킬 수 있습니다.

위 내용은 PHP 경고: mysqli_query():솔루션의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.