1

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

0 に答える 0