このコードを正しく実行するのに問題があります。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);