Halt eine PHP-while-Schleife wird mit der Funktion Bedingung

Ich benutze die folgenden Funktionen, um die endgültige URL, die aus einer Reihe von Umleitungen...

https://stackoverflow.com/a/4102293/1183476

Es funktioniert Super 99,8% der Zeit. Ich kann nicht wirklich lokalisieren, die Ausnahme, aber ich glaube, es hat etwas zu tun mit dem server am anderen Ende erzeugen eine neue, zufällige URL für jeden Besuch. So, dieses Skript stecken in einer unendlichen Schleife.

Replizieren das Problem, ersetzen Sie die get_redirect_url Funktion mit...

function get_redirect_url($url){
    return $url.'x';
}

Die Frage

Wie kann ich die Zeit einstellen oder iteration limit?

Ich das Gefühl, ich habe alles versucht. Ich habe versucht, eine zeitbasierte Bedingung in der while-Schleife, dass sieht für die nächste URL, aber es funktioniert nicht und ich weiß nicht, warum. So...

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;
}

Ich habe auch versucht, zählen von Iterationen, wie dies...

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;
}

Die Beispiele oben sind nur 2 von vielen gescheiterten versuchen. Ich bin bereit für die Hilfe. Vielen Dank im Voraus.

Ihr zählen interations-code sollte funktionieren. Versuchen echo $i.'<br>'; zu sehen, warum ist es nicht vollenden.

InformationsquelleAutor Kirkland | 2013-03-13

Schreibe einen Kommentar