본문 바로가기
PROGRAM/PHP

[MYSQL] Mysql server has gone away 에러 대응

by 반화넬 2008. 6. 23.
반응형

Mysql 사이트에 설명되어 있는 원인들은
- 커넥션이 끊어진 이후에 쿼리를 전송했을 때
- max_allowed_packet 을 초과하는 크기의 쿼리를 전송했을 때
- wait_timeout 을 초과하여 커넥션이 끊어진 경우
- 잘못된 쿼리를 지속적으로 전송하여 서버가 차단한 경우
등을 설명하고 있으나..

나의 경우에는 PHP로 짠 서비스 대몬에서 Mysql server has gone awa 문제가 발생하였고,
몇번의 쿼리를 지속적으로 전송하다 보면 해당 에러가 사라지는 현상이 반복되었다.

mysql_connect() 로 Mysql 서버에 접속할 때, new_link flag을 true로 설정하여 이 문제를 해결하였다.

기존 : mysql_connect($SERVER, $USR, $PWD);
수정: mysql_connect($SERVER, $USR, $PWD, true);

** resource
mysql_connect ([ string $server [, string $username [, string $password [, bool $new_link [, int $client_flags ]]]]] )

기존의 리소스를 재활용하지 않고, 새로운 커넥션을 강제로 사용하도록 한 것인데..
아마 mysql_connect()와 mysql_close()를 반복적으로 사용하는 스크립트에서, mysql_close() 이후 정상적으로 리소스를 반환하지 않은 탓인 것 같다.

반응형