2010-08-02 4 views
3

PHP/MySQL에서 제공하는 웹 서비스를 실행하고 있으며 최근 이상한 문제가 있음을 확인했습니다.PHP, MySQL 및 "잠자기"연결

"show full processlist;"를 실행하면 SSH 터미널을 통해 SQL 명령, 나는 몇 가지 "수면"연결주의 사항 :

| Id  | User | Host  | db  | Command | Time | State | Info     | 
+-----------+---------+-----------+---------+---------+------+-------+-----------------------+ 
| 218121282 | test_user | localhost | test_db | Sleep | 0 | NULL | NULL     | 

이 "잠자는"연결이 때문에 스크립트의 끝에서 mysql_close()를 사용하지 않는 일어나고

?

이것이 이유 인 경우, "register_shutdown_function"PHP 함수를 사용하고 콜백 함수에서 mysql_close()를 실행하여이 문제를 해결할 수 있습니까?

의견을 보내 주셔서 감사합니다.

+0

자고 "연결 때문에 말 mysql_close()를 사용하지 않는 일이"이것들이 있습니까 "

에 CentOS에서의 my.cnf 파일에 변경

-interactive_timeout 변수 스크립트? " 아니요. 비 지속 연결의 경우 자동으로 수행됩니다. – NullUserException

답변

0

영구 연결 (mysql_pconnect())을 사용하고 있습니까? 제대로 구성되지 않으면 무기한으로 머무르는 습관이 있습니다.

+0

안녕하세요, 아니요. 내 코드에서 mysql_pconnect()를 사용하고 있지 않습니다. 더 이상의 제안? 감사. – TamTam

2

스크립트가 끝날 때 mysql_close()를 사용하지 않기 때문에 "잠자기"연결이 발생합니까?

아니요. 영구적 인 경우가 아니라면 MySQL 연결은 스크립트 끝에서 종료됩니다.

이러한 절전 모드 연결은 영구 연결을 사용 중이거나 PHP 스크립트가 매우 오래 실행되는 등의 이유로 MySQL 연결이 오랫동안 열려있을 수있는 문제가 있음을 의미합니다.

영구 연결이 필요한지 여부를 알 수없는 경우 연결을 해제하는 것이 좋습니다. 일반적인 조언과는 달리, 많은 상황에서 실제로 자원을 다 써 버리는 등 더 많은 문제를 해결할 수 있습니다. 그러나 필요한 몇 가지 구체적인 상황이 있습니다. 그러나 오랜 시간 동안 수십 개의 연결을 열어 놓고 떠날 수있는 상황을 피하기 위해 자신이하고있는 일과하지 말아야 할 일을 알아야합니다. 등

+0

안녕하세요, 내 코드에 의해 답변을 주셔서 감사합니다 지속적인 연결을 사용하지 않습니다. 스크립트가 종료되면 잠시 후 MySQL 연결이 자동으로 닫힐 수 있습니까? 가능한가? – TamTam

0

변화 wait_timeout 작은 값

어쩌면