次の関数を使用して、一連のリダイレクトから最終的な URL を取得しています...
https://stackoverflow.com/a/4102293/1183476
99.8% の確率でうまく機能します。例外を正確に特定することはできませんが、アクセスごとに新しいランダム URL を生成する相手側のサーバーと関係があると思います。したがって、このスクリプトは無限ループに陥ります。
問題を再現するには、関数を次のように置き換えget_redirect_url
ます...
function get_redirect_url($url){
return $url.'x';
}
質問
時間または反復制限を設定するにはどうすればよいですか?
私はすべてを試したような気がします。次の URL を探す while ループに時間ベースの条件を入れてみましたが、機能せず、理由がわかりません。このような...
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;
}
私もこのような繰り返しを数えてみました...
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;
}
上記の例は、多くの失敗した試行のうちの 2 つにすぎません。私は助けの準備ができています。前もって感謝します。