V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
lusin
V2EX  ›  PHP

请问php程序如何避免超过亚马逊商品api每秒1次和每分钟2000次的限制呢?

  •  
  •   lusin · 2013-06-29 10:52:23 +08:00 · 6539 次点击
    这是一个创建于 4165 天前的主题,其中的信息可能已经有所发展或是发生改变。
    访客的请求可能瞬间增加,如何不超过api的限制呢?
    15 条回复    1970-01-01 08:00:00 +08:00
    dndx
        1
    dndx  
       2013-06-29 11:01:07 +08:00
    如果大多数访客会访问重复的商品,缓存。

    否则只能找亚马逊提高限额。
    msg7086
        2
    msg7086  
       2013-06-29 12:24:45 +08:00
    每秒1次,每分钟2000次,1分钟多少秒来着

    每秒1次,一天就能有几万次。商品才多少个……重复数据当然直接缓存。

    另外可以通过多个apikey和多个源IP来绕开限额
    lusin
        3
    lusin  
    OP
       2013-06-29 13:13:30 +08:00
    @msg7086 不是一天几万不够用,是担心超限引起其它不必要的麻烦

    想知道,一秒内比如有五个访问,如何通过程序限定每秒调用一次,比如每次调用的时候设定一个时间戳,下次调用的时候如果未超过一秒就不调用
    zorceta
        4
    zorceta  
       2013-06-29 13:18:50 +08:00
    @lusin 存队列 每隔一秒取队列执行
    jackyz
        5
    jackyz  
       2013-06-29 14:20:23 +08:00
    比如,不用api?
    horsley
        6
    horsley  
       2013-06-29 14:31:09 +08:00
    sleep 消息队列
    msg7086
        7
    msg7086  
       2013-06-29 14:32:55 +08:00
    @lusin 考虑多买个IP来做balancing。另外超过的话应该就是返回错误代码吧,4xx或者5xx之类,应该不会有其他什么大问题。
    013231
        8
    013231  
       2013-06-29 14:36:18 +08:00
    我不瞭解亞馬遜商品API, 不過我很好奇為什麼有每秒1次和每分鐘2000次這兩個限制. 有了每秒1次限制, 每分鐘限制應該<=60呀.
    yfdyh000
        9
    yfdyh000  
       2013-06-29 15:25:58 +08:00
    存队列,延迟、合并请求。没用过,猜测楼主想说每分钟2000项。
    suren1986
        10
    suren1986  
       2013-06-29 16:00:50 +08:00
    用redis实现一个锁,抓页面之前加锁,过期时间为1s。
    kepeng
        11
    kepeng  
       2013-06-29 16:47:17 +08:00
    22
    otakustay
        12
    otakustay  
       2013-06-30 00:52:08 +08:00
    如果只是单个页面,且不访问amazon接口这页面对用户来说没价值的话,外面nginx上做个throttle就搞定了

    如果是多个页面都用上amazon API,且没连上API这页面用户还是要看的话,在API级别上自己做throttle,这个比较麻烦,所以干脆再把这个API代理一下做成一个http service,再上nginx做throttle- -
    skydiver
        13
    skydiver  
       2013-06-30 04:47:35 +08:00 via Android
    一天2000次吧……
    RelativeLayout
        14
    RelativeLayout  
       2013-06-30 09:52:21 +08:00 via Android
    挂个goag……或者bae代理,然后模拟百度或者谷歌的爬虫。很多爬取问题迎刃而解。。
    jasontse
        15
    jasontse  
       2013-06-30 15:18:05 +08:00 via iPad
    @lusin 加个并发锁然后缓存
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   958 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 20:39 · PVG 04:39 · LAX 12:39 · JFK 15:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.