> PHP 프레임워크 > Workerman > 작업자가 db 오류를 발생시키는 경우 수행할 작업

작업자가 db 오류를 발생시키는 경우 수행할 작업

풀어 주다: 2019-12-23 10:47:37
원래의
2623명이 탐색했습니다.

작업자가 db 오류를 발생시키는 경우 수행할 작업

보다 효율적인 서버 액세스 속도를 달성하기 위해 mysql 또는 기타 데이터베이스의 긴 연결을 사용하여 액세스 속도를 향상시킬 것입니다.

The 예를 들어 다음 내용은 mysql pdo로 시작합니다.

문제:

cli가 메모리에 상주하면 생성된 연결이 실패하는 상황이 많이 발생합니다. #🎜 🎜#

해결 방법:

데이터베이스에 액세스할 때 try catch 추가

캡처된 오류가 2006 또는 2013인 경우 연결이 실패했음을 의미합니다. 시간이 지나면 데이터베이스에 다시 연결하여 프로그램이 정상적으로 작동하는지 확인하세요.

// 在和数据库交互的地方加上try catchpublic function Init($query)
    {
        try{
            // todo 这里是操作数据库的逻辑
        }catch (\Exception $e) {
            if ( $e->errorInfo[1] === 2006 || $e->errorInfo[1] === 2013 ) {
                // todo 下面填写 或者调用连接数据库的代码
                $dsn = 'mysql:dbname=' . $this->settings["dbname"] . ';host=' . $this->settings["host"] . '';
                $this->pdo = new \PDO($dsn, $this->settings["user"], $this->settings["password"], array(\PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8;"));

                $this->pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);

                $this->pdo->setAttribute(\PDO::ATTR_EMULATE_PREPARES, true);
                return true;
            }
        }
    }
로그인 후 복사

var_dump($e->errorInfo); value

array(3) {
  [0]=>
  string(5) "HY000"
  [1]=>
  int(2006)
  [2]=>
  string(26) "MySQL server has gone away"}
로그인 후 복사

더 많은 작업자 지식을 확인하세요. PHP 중국어 웹사이트

workerman tutorial#🎜 🎜#column.

위 내용은 작업자가 db 오류를 발생시키는 경우 수행할 작업의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿