指摘されているようにheader()
、HTTP ヘッダーを起動して忘れるだけなので、PHP ではリトライ メカニズムを簡単に実装することはできません。
しかし、解決しようとしている根本的な問題は何ですか? リダイレクト先のパートナー Web サイトが過負荷で、2 回目または 3 回目の試行でしか反応しない場合があります。真剣に、そのサーバーをより確実に動作させる必要があります。
一方、他のサーバーのダウンタイムの可能性を通知し、それをユーザーに通知する方法を単に探している場合は、サーバー間のクイック チェックをコードに追加できます。他のサーバーがダウンしている場合は、別のページにリダイレクトして、謝罪するか、再試行リンクを提供できます。
サーバーが稼働しているかどうかを確認するためにサーバーに ping を送信する方法については、この回答を参照してください。
大まかな解決策は次のようになります。
<?php
$url = 'http://anotherwebsite.com';
if(pingDomain($url) != -1) {
header('Location: ' . $url);
} else {
header('Location: sorry_retry_later.html');
}
// Ping function, see
// https://tournasdimitrios1.wordpress.com/2010/10/15/check-your-server-status-a-basic-ping-with-php/
function pingDomain($domain){
$starttime = microtime(true);
$file = fsockopen ($domain, 80, $errno, $errstr, 10);
$stoptime = microtime(true);
$status = 0;
if (!$file) $status = -1; // Site is down
else {
fclose($file);
$status = ($stoptime - $starttime) * 1000;
$status = floor($status);
}
return $status;
}