- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
VK приобрела 70% в структуре компании-разработчика red_mad_robot
Которая участвовала в создании RuStore
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Для получения информации по последним сделкам из amoCRM используется метод GET leads/list. Использую цикл do while. Если количество элементов в массиве, который мы получаем, меньше или больше 500, то цикл работает нормально и заканчивает работу, когда получен массив с последними сделками (от 1 до 499). Если же элементов в массиве 500, то цикл работает бесконечно, и не останавливается, хотя должен остановиться, так как в последнем полученном массиве количество элементов равно 0 ($count_leads). Как заставить цикл работать правильно?
Заставлять не нужно, такая простая конструкция не может работать неправильно, иначе бы все заметили :)
Сделайте echo $count_leads в цикле и посмотрите, в чём дело.
Например, если в одной из итераций curl_exec отработает с ошибкой, тогда $leads_list не будет установлен, а count() вернет 1 или 0.
В том то и дело, что $count_leads вывожу на экран для проверки.
echo $count_leads бесконечно показывает 500.
Также $leads_list вывожу на экран, и в каждой итерации цикла выводятся одни и те же 500 элементов массива.
Уже голову сломал, ничего понять не могу.
А что Вам отдает сервер? Вы уверены что запрос получается правильный, не может быть так что последний запрос получается неправильный и сайт пытается его обработать из-за чего отдает предыдцщие данные.
Или, может быть так, что число записей кратно 500 и Ваш цикл будет работать постоянно для некоторых наборов данных.
А что Вам отдает сервер? Вы уверены что запрос получается правильный, не может быть так что последний запрос получается неправильный и сайт пытается его обработать из-за чего отдает предыдцщие данные.
Или, может быть так, что число записей кратно 500 и Ваш цикл будет работать постоянно для некоторых наборов данных.
Вряд ли последний запрос неправильный, так как если без цикла вручную прописать $limit_offset = 500, то $count_leads будет 0.
Число записей как раз равно 500. Но почему в этом случае цикл работает бесконечно,
если после взятия первых 500 записей $count_leads будет равен 500, а после взятия вторых 500 записей $count_leads будет равен 0. А 0 - это уже условие для прерывания цикла.
Только 0 в $count_leads никак не получается. Всегда $count_leads равен 500 (при 500 записях).
вы шутите?
условие же у вас прописано - повторять пока $count_leads == 500, вот оно и повторяется.
вы шутите?
условие же у вас прописано - повторять пока $count_leads == 500, вот оно и повторяется.
или вам нужна справка по циклу do while?
Flector, А где я шучу?
$count_leads - это количество элементов в полученном массиве.
А при пятистах записях последний массив должен иметь 0 элементов
(первая итерация цикла: $count_leads == 500, вторая итерация: $count_leads == 0), а 0 !=500,
значит цикл должен прерваться.
Разве нет?
вы в запросе запрашиваете 500 элементов.
даже если они пустые.
count считает количество элементов, а не количество не пустых элементов.
вот и выходит, что всегда 500.
я так думаю, но могу ошибаться.
попробуйте через echo не $count_leads выводить, а $leads_list
вы в запросе запрашиваете 500 элементов.
даже если они пустые.
count считает количество элементов, а не количество не пустых элементов.
вот и выходит, что всегда 500.
я так думаю, но могу ошибаться.
Вы ошибаетесь, я уже выше писал.
Если без цикла вручную прописать
$link='https://'.$subdomain.'.amocrm.ru/private/api/v2/json/leads/list?limit_rows=500&limit_offset=500';
то $count_leads выведет 0.
я хз, обнулите $count_leads в начале цикла.
я хз, обнулите $count_leads в начале цикла.
Ну а если ХЗ, то чего умничать?
Дело не в $count_leads. $leads_list постоянно в каждой итерации выводится тоже один и тот же (500 элементов).