명령줄 모드에서
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 작업 시 링크 타임아웃 문제가 있나요?
지도를 요청하세요!
매번 데이터베이스에 다시 연결하는 것이 가장 좋습니다. 귀하의 오류는 링크 손실로 인해 발생할 수 있습니다.
데이터베이스와 너무 다르지 않도록 데이터베이스와 관련된 c3p0의 매개변수 값을 조정하세요 wait_timeout
mysql_ping 함수를 사용하여 연결 여부를 확인하세요.
으아아아