![]() |
1
2
我已经把德里克的建议写成代码了。
UPD。 我已将其更新版本放在Packagegist上,以便您可以将其与Composer一起使用: https://packagist.org/packages/ob-ivan/throttler 要安装:
要使用:
请注意,还有其他提供相同功能的软件包(我没有测试过任何一个): |
![]() |
2
2
我会先记录第一个请求发出的初始时间,然后计算发出的请求数。发出60个请求后,确保当前时间至少比初始时间晚1分钟。如果没有,请等待多长时间,直到到达分钟。达到分钟时,重置计数和初始时间值。 |
![]() |
3
1
我的做法是:
|
![]() |
4
0
我尝试过静态睡眠、计算请求数和做简单的数学运算等天真的解决方案,但它们往往非常不准确、不可靠,通常会引入更多的睡眠,而这在他们本可以工作的时候是必要的。你想要的是,只有当你接近利率上限时,才会出现相应的睡眠。 将我的解决方案从 previous problem 对于那些甜蜜的互联网点: 我用一些数学计算出一个函数,该函数将在给定的请求中休眠正确的时间总和,并允许我在接近结束时以指数方式递增。 如果我们将睡眠表示为:
哪里
这相当于:
并可通过以下方式解决:
而求解B会更有用,因为
经过一点修补,我发现
还有,如果有人想解这个方程
虽然我相信我们的情况略有不同,因为我的API提供程序的响应都包括可用API调用的数量,以及窗口中剩余的数量。您可能需要额外的代码来跟踪这一点。 |
![]() |
Jacco · 未能格式化我的日期以在php中正确工作 1 年前 |
![]() |
jay ram · 如何在URL核心php中从API获取JSON? 1 年前 |
|
Ishwarya A · php电子表格在浏览器中显示多张excel 1 年前 |