错误您最近提出了太多请求。请冷静。在Asana API中

时间:2014-02-19 12:51:15

标签: php curl asana

我试图只从Asana API发送5次调用来获取任务。这是我的代码

$tasks = $client->fetch('https://app.asana.com/api/1.0/workspaces.json');
print_r($tasks);
$i=0;

while(isset($tasks['result']['data'][$i]['id']))
{ 
    $tasks_detail = $client->fetch('https://app.asana.com/api/1.0/workspaces/'.$tasks['result']['data'][$i]['id'].'.json');
    print_r($tasks_detail);

    while(isset($tasks_detail['result']['data'][$i]['id']))
    { 
        $tasks_details = $client->fetch('https://app.asana.com/api/1.0/tasks/'.$tasks_detail['result']['data'][$i]['id'].'.json');
        print_r($tasks_details);
        $i++;
    }

我只使用了2个while循环来从API获取任务,之后api不会响应这些调用。

1 个答案:

答案 0 :(得分:2)

考虑这种情况:

$tasks['result']['data'][$i]['id']

存在且

$tasks_detail['result']['data'][$i]['id']

不存在。

你将永远循环,因为$ i永远不会变大; 考虑一下这种情况:

$tasks['result']['data'][1]['id']

存在且

$tasks_detail['result']['data'][1]['id']
$tasks_detail['result']['data'][2]['id']
$tasks_detail['result']['data'][3]['id']

存在。

您将访问的下一个循环

$tasks['result']['data'][4]['id']

直接输掉

$tasks['result']['data'][2]['id']
$tasks['result']['data'][3]['id']

您可能想要这样做:

while(isset($tasks['result']['data'][$i]['id'])){ 
    $tasks_detail = $client->fetch('https://app.asana.com/api/1.0/workspaces/'.$tasks['result']['data'][$i]['id'].'.json');
    print_r($tasks_detail);

    if(isset($tasks_detail['result']['data'][$i]['id'])){
        $tasks_details = $client->fetch('https://app.asana.com/api/1.0/tasks/'.$tasks_detail['result']['data'][$i]['id'].'.json');
        print_r($tasks_details);
    }
    $i++;
}

使用while循环时请小心结束循环。