将API调用限制为1/秒



我正在构建使用Blekko API(web搜索API)的web应用程序。应用程序是多用户的

我需要限制对API的调用为1[调用/秒]。这个限制应该适用于所有用户的所有活动,也就是说,应该有一些使用API的时间表。

我需要一些建议,怎么做?

听起来对API调用的响应性并不太重要,因为您正在谈论队列。如果是这种情况,我会将API请求URL转储到数据库表中。然后,在后台工作进程中,我将执行以下操作:

set_time_limit(0);
$api_requests = array();
while (TRUE)
{
    if (count($api_requests) == 0)
    {
        // get multiple records from DB to limit requests and add
        // to the $api_requests array.
        // if DB returns no results, maybe sleep a few extra seconds
        // to avoid "slamming" the database.
    }
    // get the next API request from the array
    $request = array_shift($api_requests);
    // send API request to Blekko
    // process API results
    // sleep 1 sec
    sleep(1);
}

这是一个有点"忙碌"的循环,但它将确保您每秒不会运行超过一个请求,并且还保证排队的请求不会等待太长时间来处理。

注意:无论set_time_limit()调用如何,该方法都要求服务器不会杀死进程本身。长时间运行的进程常常在共享服务器上被杀死。

一个简单的方法是使用usleep()

usleep(1000000);将暂停脚本1.0秒

相关内容

  • 没有找到相关文章

最新更新