실제로 수면이 일반적으로 어떻게되는지. PHP에서 sleep
은 초 동안 만 잠자기가 가능하므로 두 번째 방법을 사용하는 경우 usleep
또는 time_nanosleep
을 사용하십시오.
모든 쿼리가 즉시 실행되고 일괄 처리를 실행한다는 가정을하고 싶다면 60 초당 20 행으로 제한하는 것이 매우 쉽습니다. 각 행에서 3 초 후에 절전 모드로 전환하십시오. 쿼리가 즉각적이지 않으면 초당 적은 수의 행을 삽입해야합니다.
원하는 경우 삽입 시간을 3 초 동안 유지하면 각 행이 개별적으로 삽입되는 데 3 초 미만인 경우 60 초당 20 행이 보장됩니다. 길이가 길어지면 60 초당 20 점 미만으로 떨어집니다. 나는 이것이 정말로 가치가 없다고 제안합니다. 데이터베이스가 이미 과부하되었을 때 인서 터가 더 열심히 작동하게 만드는 나쁜 결과를 가져올 것입니다.
자동 커밋 모드가 아닌 경우 자주 커밋하기를 원할 것입니다. 커밋되지 않은 변경 사항을 필요 이상으로 오래 보관하는 것은 일반적으로 바람직하지 않습니다.
마지막으로, 더 긴 시간 동안 평균 20 행/60 초를 유지해야하는 경우 (들어오는 데이터가 터지면) 토큰 버킷 필터로 이동합니다. 매 3 초 (60 초/20 초) "버킷"에 "토큰"을 추가합니다. 양동이는 최대 20 개의 토큰을 수용합니다. 행을 삽입 할 때마다 버킷에서 토큰을 제거합니다. 버킷이 비어있는 경우 토큰을 삭제할 때까지 기다립니다.
분당 20 개가 넘는 행이 추가되면 다운로드가 데이터를 따라 잡을 수 없다는 점에 유의하십시오. 그들이 제한을 부과하는 경우, 당신이 할 수있는 한 빨리 작업을 시도하면 그들의 한계를 초과하는 당신을 멈출거야. 그들이 당신에게 자신에게 한계를 부과 할 것을 요구한다면, 당신은 각 줄 다음에'sleep (3)'과 같은 것을 사용해야합니다. –
흠, 지금은 여러 가지 방법을 시도했지만, 20 줄 이후에 "finsish"한 것처럼 보입니다. 문제가 그것이 내가 추가 한 수면 기능인지 또는 그 때까지 시스템에서 로그 아웃했는지는 알 수 없습니다. sleep()이 실행 중입니다. 제안? –