@buryakov_dima

Почему cUrl не работает в цикле?

Здравствуйте, прошу помощи с решением одной, небольшой проблемки с циклом и cUrl. Имеется следующий код:
public function getAllMessage($offset = 0)
    {
        $groupCounter = 0;
        foreach ($this->groupArray as $currentGroup)
        {
            $groupCounter++;

           $apiUrl = "https://api.vk.com/method/wall.get?owner_id=-". $currentGroup ."&count=1";

            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL, $apiUrl);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
            curl_setopt($ch, CURLOPT_HEADER, 0);
            curl_setopt($ch, CURLOPT_TIMEOUT, 10);

            $apiResponse = curl_exec($ch);
            $outputArray[$groupCounter] = json_decode($apiResponse, true);

            curl_close($ch);
        }
        print_r($outputArray);
    }


Проблема заключается в том, что URL для cUrl передаются в цикле foreach (также пробовал обычный for), например если на вход подать массив с URL состоящий из 3х элементов, то по логике на выходе должен получится массив который будет содержать в себе 3 ответа от сервера VK, но на деле получается так, что первые 2 элемента массива вообще пустые, а вот как раз в последнем есть ответ от сервера ВК (и этот ответ приходит от третьего, последнего элемента входного массива т.е последней ссылки). Что не так? Почему не работает, прошу помощи!

p.s все URL валидные (проверенно)
  • Вопрос задан
  • 723 просмотра
Пригласить эксперта
Ответы на вопрос 3
SilenceOfWinter
@SilenceOfWinter Куратор тега PHP
та еще зажигалка...
timeout побольше, проверить значения $this->groupArray на валидность, лучше всего делать принудительное объявление $outputArray - $outputArray = array();
Ответ написан
Adamos
@Adamos
curl возвращает false в случае ошибки.
json_decode от него делать бесполезно.
И если аргумент в неправильной кодировке, декодирован он тоже будет в пустоту.

Ну, и использование $groupCounter демонстрирует, что это, похоже, ваш первый РНР-скрипт ;)
Ответ написан
Комментировать
@Nc_Soft
В вк есть ограничения на частоту запросов к апи, это 3 раза в секунду (в самом низу написано)
https://vk.com/dev/api_requests
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы