【问题标题】:PHP cUrl Rate Limiting per API每个 API 的 PHP cUrl 速率限制
【发布时间】:2012-10-30 20:29:05
【问题描述】:

我正在开发各种流行 API 的 PHP 混搭,并希望实施速率限制以确保我玩​​得很好。

我做了一些研究并查看了 CURLOPT_MAXCONNECTS 和 CURLOPT_TIMEOUT,但我对它们的功能有些困惑。

据我了解,可能是错误的:

CURLOPT_MAXCONNECTS
---
  Each script that calls a cUrl request opens a connection.  
  When the MAXCONNECTS limit is reached, then the server delays the request.

CURLOPT_TIMEOUT
---
  The amount of time that the server will wait to make a connection.  
  Working with MAXCONNECTS, does that mean that cUrl will make the listed 
  number of connections and then wait up to TIMEOUT for an open thread?

所以——显然,我对 cUrl 如何使用这些参数实际运行感到非常困惑。我正在开发的应用程序需要针对我正在调用的每个 API 将 cUrl 请求限制在不同的限制。据我了解,cUrl 选项是服务器范围的吗?是否有某种方法可以将令牌附加到特定的 cUrl 调用并以这种方式应用每个 API 的限制?我需要使用一些全局/共享内存魔法吗?

你真的很困惑, 萨曼莎。

【问题讨论】:

    标签: php api curl limit throttling


    【解决方案1】:

    CURLOPT_MAXCONNECTS 只是同时请求的最大数量。 CURLOPT_TIMEOUT 是在没有应答的情况下,cURL 在中止请求之前等待的时间。

    你必须手动限制你的工作

    【讨论】:

    • 那么,MAXCONNECTS 是如何工作的?您可以使用每个 cURL 请求重置它。它是如何计算的?另外,您说手动限制您的限制:您建议以什么方式解决这个问题?
    • 我真的不知道如果你在不同的请求上设置不同的值,CURLOPT_MAXCONNECTS 会起作用,但在你的情况下,这不是你想要的。我建议将每个请求存储在数据库、文件或 APC var 中,并简单地中止或延迟任何超出您限制的请求。
    猜你喜欢
    • 2012-09-03
    • 2019-02-09
    • 1970-01-01
    • 2014-11-11
    • 1970-01-01
    • 1970-01-01
    • 2020-11-04
    • 1970-01-01
    相关资源
    最近更新 更多