2017-11-20 10 views
0

타사 서버에서 데이터를 가져와야하고 그 서버가 초당 최대 1 요청을 허용하는 앱을 개발 중입니다.큐 레이트 제한

이제 모든 요청이 작업으로 전송되고 초당 1 작업을 릴리스하는 Laravel "Rate Limiting"을 구현하려고하지만 구현해야하는 이유와 웹에 실제 예제가 없다는 것을 알 수 없습니다.

누구든지 구현 했습니까?

어떤 힌트일까요?

+0

내부 API를 호출하여 외부 API를 사용하고이 작업을 사용하여 내부 API를 사용하십시오. 자신의 내부 API에 대한 속도를 제한하십시오. – Ohgodwhy

답변

0

이 같은 작업을 수행 할 수 있습니다 당신은 단지 하나의 노동자가 가정 :

  • 는 (마이크로와) 마무리 사이의 1 초를 뺀 차이입니다
  • 수면 시간을
  • GET 시간을 수행해야하는 일을 시간과 시작 시간 그래서 기본적으로

:

doSomething() 
$time = microtime(true); 
usleep(1000 - ($time - LARAVEL_START)); 
0

이 패키지를 사용하면 Redis 또는 파일 같은 다른 소스에서 속도 제한을 사용할 수 있습니다. 설정을 사용하여 시간 제한의 분수로 버킷 크기 및 비율을 설정하므로 매우 작은 저장 공간입니다.

composer require bandwidth-throttle/token-bucket 

https://github.com/bandwidth-throttle/token-bucket

그것은 당신이 경우에 수표를 포장 할 수 있습니다, 그래서 무료 토큰을 사용할 수하는 것이 대기

, (1) 귀하의 예제에서 분. 실제로, 새로운 분이 될 때까지 필요한 시간 동안 서비스를 잠자기 상태로 만듭니다.