J'utilise les fonctions suivantes pour obtenir l'URL finale à partir d'une série de redirections...
https://stackoverflow.com/a/4102293/1183476
Il fonctionne parfaitement dans 99,8 % des cas. Je ne peux pas vraiment identifier l'exception, mais je pense qu'elle a quelque chose à voir avec le fait que le serveur à l'autre bout génère une nouvelle URL aléatoire pour chaque visite. Ainsi, ce script reste bloqué dans une boucle infinie.
Pour reproduire le problème, remplacez le get_redirect_url
fonction avec...
function get_redirect_url($url){
return $url.'x';
}
La question
Comment puis-je fixer une limite de temps ou d'itération ?
J'ai l'impression d'avoir tout essayé. J'ai essayé de mettre une condition temporelle dans la boucle while qui recherche la prochaine URL, mais cela ne fonctionne pas et je ne sais pas pourquoi. Comme ceci...
function get_all_redirects($url){
$redirects = array();
$start = time();
while ($newurl = get_redirect_url($url) && time()-$start < 10 ){
if (in_array($newurl, $redirects)){
break;
}
$redirects[] = $newurl;
$url = $newurl;
}
return $redirects;
}
J'ai également essayé de compter les itérations comme suit...
function get_all_redirects($url){
$redirects = array();
$i = 0;
while ($newurl = get_redirect_url($url) && $i < 10 ){
if (in_array($newurl, $redirects)){
break;
}
$redirects[] = $newurl;
$url = $newurl;
$i++;
}
return $redirects;
}
Les exemples ci-dessus ne sont que deux des nombreuses tentatives qui ont échoué. Je suis prêt à recevoir de l'aide. Merci d'avance.