Обработка обратной реакции геокодирования - PullRequest
0 голосов
/ 10 июня 2019

У меня есть один скрипт обратного геокодирования, который возвращает название города на основе широты и долготы. Он отлично работает, когда мы пытаемся увидеть результат только для одного города. Но когда я запускаю один и тот же сценарий в цикле foreach (примерно 3000 городов один за другим), это занимает некоторое время, но возвращает пустой ответ, из-за которого мой зависимый код дает неправильный результат.

Написали приведенный ниже код, который отлично работает примерно для первых 30 записей, затем он дает пустой ответ снова, после 20 нечетных записей, он дает надлежащий результат и так далее. Из-за этого мне нужно выполнять этот скрипт для каждых 30 записей, и мои общие записи около 30K.

foreach ($cityArray as $city)
{
    $curl = curl_init('https://us1.locationiq.com/v1/reverse.php?key=MY_KEY&lat=CITY_LATITUDE&lon=CITY_LONGITUDE&format=json');

    curl_setopt_array($curl, array(
      CURLOPT_RETURNTRANSFER    =>  true,
      CURLOPT_FOLLOWLOCATION    =>  true,
      CURLOPT_MAXREDIRS         =>  10,
      CURLOPT_TIMEOUT           =>  30,
      CURLOPT_CUSTOMREQUEST     =>  'GET',
    ));

    $response = curl_exec($curl);
    $err = curl_error($curl);

    if ($err) 
        ```Joomla log error code
    else 
        $json = json_decode($response);

                ``` update the record into table with decode json array object
    curl_close($curl);
}

После 30 нечетных записей скрипт возвращает пустой ответ. Если мы снова выполним тот же скрипт, это даст результат. Сценарий должен выполняться не менее 3000 записей без сбоев, вместо того, чтобы давать правильный результат только для 30 записей.

...