Гость
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / [php] как не зациклить? / 8 сообщений из 8, страница 1 из 1
13.12.2018, 15:35
    #39747473
yarnik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[php] как не зациклить?
Как сделать чтобы чтобы максимум закилилось на 5 раз?
Код: php
1.
2.
3.
function make_curl($url) {
	make_curl($url);
}
...
Рейтинг: 0 / 0
13.12.2018, 15:47
    #39747480
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[php] как не зациклить?
В приведенном коде рекурсия в явном виде. У рекурсии есть глубина вложенности. Как вариант, можно добавить второй параметр и анализировать его.
Но если Вам нужно именно максимум N вызовов функции, то гораздо проще (и понятнее) написать цикл.
...
Рейтинг: 0 / 0
13.12.2018, 16:35
    #39747505
yarnik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[php] как не зациклить?
я написал примитивно чтобы не загружать скрипт,
на самом деле он выглядит более обьемно, в данном случае это:
Код: php
1.
2.
3.
4.
5.
function make_curl($url) {
	if ($code == 301 || $code == 302 || $code == 303) {
		make_curl($url);
	}
}


Но есть сайты, которые определяют что к ним конектятся програмно и все время выдают редирект.
Вот я и хочу указать максимальное количество попыток
...
Рейтинг: 0 / 0
13.12.2018, 17:09
    #39747529
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[php] как не зациклить?
Что мешает использовать CURLOPT_FOLLOWLOCATION для следования по редиректам + CURLOPT_MAXREDIRS для ограничения количества переходов?
...
Рейтинг: 0 / 0
13.12.2018, 20:04
    #39747629
yarnik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[php] как не зациклить?
1. CURLOPT_FOLLOWLOCATION у меня не работает
2. мне нужно не знать сколько было редиректов

а по сути решение может кто то предложить?
...
Рейтинг: 0 / 0
13.12.2018, 20:43
    #39747635
yarnik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[php] как не зациклить?
я решил так:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
$redirect_count = 0;
function make_curl($url) {
	global $redirect_count;
	if ($redirect_count > 4) { echo "redirect_count > 3"; }
	elseif ($code == 301 || $code == 302 || $code == 303) {
		$redirect_count++;
		make_curl($url);
	}
}
...
Рейтинг: 0 / 0
14.12.2018, 09:15
    #39747731
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[php] как не зациклить?
yarnik1. CURLOPT_FOLLOWLOCATION у меня не работает
Вы какой-то особенный, что оно у вас не работает?


yarnik2. мне нужно не знать сколько было редиректов
http://php.net/manual/ru/function.curl-getinfo.php
Код: plaintext
CURLINFO_REDIRECT_COUNT - Число перенаправлений с включенной опцией CURLOPT_FOLLOWLOCATION


yarnikа по сути решение может кто то предложить?
продолжай писать велосипеды.
...
Рейтинг: 0 / 0
14.12.2018, 09:16
    #39747732
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[php] как не зациклить?
автор
Код: plaintext
if ($redirect_count > 4) { echo "redirect_count > 3"; }

Л - логика!
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / [php] как не зациклить? / 8 сообщений из 8, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]