我无法让此代码正确执行。Highrise API 的工作方式是它只会在每个请求中返回 500 个结果,为了获得更多结果,您将其添加?n=number
到 URL 的末尾。我有近 9000 个条目,我需要遍历每个条目并根据一些条件语句提取信息。
我的目标是遍历这个函数,每次都添加500
到 URL 的末尾,获得额外的 500 个条目。为了测试,我只让它循环了 3 次,但由于某种原因它只是挂起并且从不返回任何东西。我知道它每次请求都会检索大量数据,所以我已经等了 3 分钟,但没有运气。
我检查了我的错误日志,没有看到任何错误。也许我curl
在循环内不正确地执行了命令。如果我删除第一个for
循环,我会按预期返回前 500 个结果。
<?php
$curl = curl_init();
function runScript($curl) {
for($currentCount = 0; $currentCount <= 1000; $currentCount + 500) {
//set parameters to be used for curl options
curl_setopt_array($curl, array(
CURLOPT_USERPWD => 'xxxxxxxxxxxx:X',
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_URL => "https://xxxxxxx.highrisehq.com/people.xml?n=$currentCount",
CURLOPT_USERAGENT => 'XXXXXXXXX Test App (xxxx@xxxxxx.com)'
));
$resp = curl_exec($curl);
$xml = new SimpleXMLElement($resp);
foreach($xml->person as $person) {
if($person->{'subject_datas'}) {
foreach($person->{'subject_datas'}->{'subject_data'} as $subjectData) {
if($subjectData->{'subject_field_id'} == 780666) {
echo $person->{'first-name'};
echo ", ";
echo $person->{'last-name'};
echo ", ";
echo $person->{'title'};
echo ", ";
echo $person->{'company-name'};
echo ", ";
foreach($person->{'contact-data'}->{'email-addresses'} as $email) {
echo $email->{'email-address'}->{'address'};
}
echo ", ";
echo $subjectData->{'value'};
echo "<br/>";
}
}
}
}
}
}
runScript($curl);
curl_close($curl);