在PHP Codeigniter中的给定时间段内,通过Follow API高效地跟踪Pinterest用户

在PHP Codeigniter中的给定时间段内,通过Follow API高效地跟踪Pinterest用户,php,api,codeigniter,curl,pinterest,Php,Api,Codeigniter,Curl,Pinterest,Pinterest API适用于以下方面: 每个用户访问令牌每小时限制1000次点击 现在,我必须跟踪特定用户ID的用户,以便: 我可以在限制和限制内跟踪用户 Pinterest不阻止我的个人资料 目前,我正在通过以下方式进行: 一个cron,每3个小时就会点击以下函数的URL 一种功能,即: 计算用户在一个循环中要遵循的Eg: 1. let currentTime = 1:00 and endTime = 2:00 user to follow = 3

Pinterest API适用于以下方面: 每个用户访问令牌每小时限制1000次点击

现在,我必须跟踪特定用户ID的用户,以便: 我可以在限制和限制内跟踪用户 Pinterest不阻止我的个人资料

目前,我正在通过以下方式进行: 一个cron,每3个小时就会点击以下函数的URL 一种功能,即:

  • 计算用户在一个循环中要遵循的Eg:

        1. let currentTime = 1:00
            and endTime = 2:00
            user to follow = 300
            timeRemaining = currentTime-endTime => 60 minutes
            300/60 = 5 => ceil(5)=5
        2. it will fetch five user in one iteration from Pinterest
        3. than it will follow them one by one in second loop 
        4. after that again it will calculate until userToFllow become 0
            300-5=295 =>  ceil(295/timeRemaining(let 59)) = 5
        5. again 1 for next user
    

  • 根据上述逻辑,我们的一些用户被禁止/阻止可能是因为Pinterest


    请建议我回答一个解决方案,如果可能的话,我是否应该使用多线程或更多的函数来做这个异步。如果只通过CodeIgniter就可以完成,我会很高兴的,所以请在api中遵循以下逻辑:

    对于每个唯一的用户令牌,每个应用(具有唯一的应用ID)每小时允许1000次呼叫。“60分钟”窗口是一个滑动窗口,它基于您第一次提出请求的时间。如果您达到了费率限制,您最多只需等待1小时即可获得更多请求

    每个API响应都返回一个标头,该标头为您提供有关 速率限制。X-Ratelimit-Limit是该特定项目的利率限制 请求,X-Ratelimit-Remaining是您的请求数 在60分钟的窗口左

    在api响应头中添加此条件,并检查剩余的数量

    If you exceed your rate limit for a given endpoint, you’ll get a 429 “Too many requests” error code.
    
    检查此条件响应,如果http代码为429或登录到日志文件,则触发给自己的电子邮件

    PS:未尝试此方法,但确保它将以相同的方式帮助您解决问题


    来源

    我通过在同一用户的Pinterest帐户的两个follow API调用之间添加延迟解决了上述帐户禁止问题,如下所示:

    • 上述方法是每分钟跟踪5个用户一次,这将导致 机器人活动如果所有后续活动仅属于一个帐户
    • 如果我们把每小时300次的最大跟踪作为安全极限,那么我们可以 在一分钟内跟踪每个帐户的5个用户,时间间隔12秒 介于之间或介于8-12之间的随机数,用于更人性化的操作
    • 有12秒的时间间隔,我们可以处理其他帐户的队列,以便 我们有效地使用资源
    • 我们必须限制每个帐户最多50K,因为这是标准限制
    前五名在一分钟内接踵而至

    队列:A1、A1、A2、A3、A1

    A1-A1-A2-A3-A1-----------------------wait till the end of the minute-------
    
    A1-A2-A3---------A1-----------A1-----wait till the end of the minute-------
    
    现在

    队列:A1、A1、A2、A3、A1

    A1-A1-A2-A3-A1-----------------------wait till the end of the minute-------
    
    A1-A2-A3---------A1-----------A1-----wait till the end of the minute-------
    
    A代表账户

    -表示秒

    这只是一个基本实现的概述,以避免禁令