如何使用Bigcommerce PHP SDK处理速率限制

时间:2014-12-24 17:21:37

标签: php bigcommerce rate-limiting

我构建了一个使用Bigcommerce PHP SDK访问其API的应用程序。在我的应用程序的各个部分中,我使用SDK中的方法来执行各种任务。例如,如果我需要从客户的商店购买产品,我会在我的脚本中写下以下内容:

Bigcommerce::getProduct(123);

其他时候,我可能需要获得订单,少量订单或产品,或编辑产品。阅读Bigcommerce API的文档说明他们会对限制通话率进行评级,如果达到限制,他们会回复一个错误代码,提醒您在进行下一次API调用之前必须等待一定的秒数。你可以在这里阅读(https://developer.bigcommerce.com/api/rate-limits/basic)。

遵循这些速率限制的一种方法是在我调用Bigcommerce API的应用程序中的每个位置后添加类似以下代码的内容:

$product = Bigcommerce::getProduct(123);

if(!$product){
    if(Bigcommerce::getLastError()->code == 429){
        sleep(Bigcommerce::connection()->getHeader("X-Retry-After"));

        //get the product again
        $product = Bigcommerce::getProduct(123);
    }
}

然而,每当我调用API时,这很快就会成为管理的巨大痛苦。我的问题是,我应该编写自己的函数来处理调用API,它具有内置的速率限制检查。类似的东西:

function callBigcommerceApi($method, $args)
{

    $response = Bigcommerce::$method($args);

    if(!$response){

        if(Bigcommerce::getLastError()->code == 429){

            sleep(Bigcommerce::connection()->getHeader("X-Retry-After"));

            callBigcommerceApi($method, $args);
        }
        else{

            return $response;
        }
    }

}

或者,我应该以某种方式将这样的函数集成到SDK本身中,以便随时调用SDK中的任何方法,它将受速率限制并知道如何处理它?<​​/ p>

0 个答案:

没有答案