php - msyql 문 링크 시간 초과를 해결하는 방법은 무엇입니까?
为情所困
为情所困 2017-05-16 13:10:50
0
3
743


명령줄 모드에서
thinkphp 프레임워크를 사용하여
무한 루프를 작성했습니다
논리 작업이
중단되지 않고
초당 한 번 실행되도록 하고 싶습니다
>코드는 다음과 같습니다

공개 함수 인덱스()
{
    $redis = new \Redis\Redis();//redis 인스턴스화
    $redis_res = $redis ->
    if ($redis_res !== 'PONG') {
        error_log('/tmp/1.log', $e->getMessage());
    }
    $abb = M('abb');//인스턴스화
    $i = 0;
    동안(참) {
        //연결 데이터베이스 시간 초과를 처리하는 데 사용됩니다. 방법 1
        $i++;
        if ($i >= 1000) {
            $i = 0;
            $abb = M('abb');
        }
        
        //////////논리 연산////////////
        노력하다 {
            $result1 = $abb->add(array('a' => 'abc'));//데이터베이스 작업
        } 잡기 (\예외 $e) {
          error_log('/tmp/2.log', $e->getMessage());
        }
        노력하다 {
            $result2 = $redis -> Lpush('abc',$result1);//redis 작업
        } 잡기 (\예외 $e) {
          error_log('/tmp/3.log', $e->getMessage());
        }
        //////////논리 연산////////////
        수면(1);
    }
}

그러나 문제가 있습니다. 데이터베이스에 대한 링크가 너무 오래 걸리면 MySQL이 자동으로 연결을 끊습니다.
2006: MySQL 서버가 사라졌습니다.
wait_timeout의 기본값은 8시간이며,
wait_timeout을 늘리는 것은 길지 않습니다. -term 해결책.
그래서 1000회 실행 시 M('abb')을 다시 실행하고 싶지만 여전히 작동하지 않는 것 같습니다. M('abb') 다시 훈련= 데이터베이스에 링크?

다른 해결책이 있나요?
내 연결된 데이터베이스가 중단되지 않도록 하려면 어떻게 해야 합니까?
Redis 작업 시 링크 타임아웃 문제가 있나요?
지도를 요청하세요!

为情所困
为情所困

모든 응답(3)
某草草

매번 데이터베이스에 다시 연결하는 것이 가장 좋습니다. 귀하의 오류는 링크 손실로 인해 발생할 수 있습니다.

刘奇

데이터베이스와 너무 다르지 않도록 데이터베이스와 관련된 c3p0의 매개변수 값을 조정하세요 wait_timeout

淡淡烟草味

mysql_ping 함수를 사용하여 연결 여부를 확인하세요.

으아아아
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿