@zapupin

Как сделать рекурсию или что применить?

Добрый день.
Есть такая задачка:
1. Есть куча ссылок
2. Нужно пройтись по этой куче с определенным периодом (под периодом подразумевается возврат true от функции)

Пример:
<?php
$ar = [	
    'http://yandex.ru/какой-то-url',
    'http://yandex.ru/какой-то-url',
    'http://yandex.ru/какой-то-url',
    'http://yandex.ru/какой-то-url',
    'http://yandex.ru/какой-то-url',
    'http://yandex.ru/какой-то-url',
];
$c = 1;
foreach($ar as $k=>$v){
	$url = $ar[$k];
	$g = get_headers($url);
	print_r($c++.") ".$g[0]." ".$g[6]." ".$g[8]."<br>");
}

?>


Не силен в терминологии программистов, ну как то так:
Функция get_headers($url); крутится, вертится и когда выполнит свою задачу, "возвращает" true (понятно что она вернет результат, ну грубо говоря она возвращает true так как выполнила задачу успешно).
Я так понимаю нужна рекурсия, так как надо чтоб:
Есть 100 ссылок
get_headers($url); - проработала 4 ссылки, вернула true (результат), пошла по следующим 4 ссылкам и т.д. пока все не пройдет.
Если в нее сразу запиндюрить все 100 ссылок, то полезут всякие ошибки, типа execution time limit и какие еще, только богу известно...

Можете подсказать, как правильно оформить функцию/рекурсию или другой подход для выполнения данной задачи?
Заранее спасибо!
  • Вопрос задан
  • 111 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Yan-s
Нет, это не рекурсия.

Если вы хотите избежать ошибок, то такие вещи как time limit надо отключить, а если что то во время выполнения может пойти не так, то эти ситуации надо отловить try catch.

Если вы хотите просто дергать функцию периодически, то вам надо запускать ее извне кроном, например. Ссылки хранить тоже где то снаружи (бд, файл) и при обработке удалять/помечать.

Если вам надо ускорить выполнение функции с curl путем отправки нескольких запросов за раз, то вот php.net/manual/ru/function.curl-multi-exec.php и гуглите, например "многопоточный curl"/
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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