悪いニュースは、PHP はブラウザに強制的に何かをさせることができないということです。これを実現するには、ajax を使用した JavaScript が必要です。しかし、クライアント側でJavaScriptが無効になっているとどうなりますか。php には小さなトリックがあります。
これがあなたができることです。
次のようにして、ライブブロードキャストが開始されるまでの秒数を決定します
$numOfSeconds = $starttime - $currtime;
次に、何秒後にブラウザを更新するかがわかったら、php でそれを行う方法を次に示します。
header( "refresh:$numOfSeconds;urltoanywhere.php" );
これにより、特定の時間後に移動したい任意の URL に移動します。更新したい場合は、同じページへの URL を定義します。このロジックを拡張して、必要な方法で実装できます。
アップデート1:
以下は、私がテストした作業コードです。これがあなたに役立つことを願っています:)
<?php
ob_start();
date_default_timezone_set('Europe/London');
$currentPage = $_SERVER['PHP_SELF'];
$currentTimestamp = strtotime(date('Y-m-d H:i:s'));
//Define your startTime here in {Year-Month-Day Hour:Minute:Second} format
$startTime = '2012-04-26 21:57:00';
//Define your endTime here in {Year-Month-Day Hour:Minute:Second} format.
$endTime = '2012-04-27 22:00:00';
$startTimestamp = strtotime($startTime);
$endTimestamp = strtotime($endTime);
$numOfSecondsToReload = $startTimestamp - $currentTimestamp;
if($currentTimestamp >= $startTimestamp && $currentTimestamp <= $endTimestamp):
?>
<a href="*broadcastlink*">LIVE NOW</a>
<?php else: ?>
<p>Live at <?php echo date('H:i', $startTimestamp); ?></p>
<?php header( "refresh:$numOfSecondsToReload;$currentPage"); ?>
<?php endif; ?>
Update2:特定の div コンテンツをリロードします。これが使用できるコードです。
<div id="live">
<?php
ob_start();
date_default_timezone_set('Europe/London');
$currentPage = $_SERVER['PHP_SELF'];
$currentTimestamp = strtotime(date('Y-m-d H:i:s'));
$startTime = '2012-04-27 12:42:20';
$endTime = '2012-04-28 22:00:00';
$startTimestamp = strtotime($startTime);
$endTimestamp = strtotime($endTime);
$numOfSecondsToReload = $startTimestamp - $currentTimestamp;
if($currentTimestamp >= $startTimestamp && $currentTimestamp <= $endTimestamp):
?>
<a href="*broadcastlink*">LIVE NOW</a>
<?php else: ?>
<p>Live at <?php echo date('H:i', $startTimestamp); ?></p>
<?php endif; ob_end_flush(); ?>
<div id="timeremaining" hidden><?php echo $numOfSecondsToReload * 1000; ?></div>
</div>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript">
var numOfMiliSecondsToReload = $('#timeremaining').html();
var timeToReload = (numOfMiliSecondsToReload >= 0) ? numOfMiliSecondsToReload : 86400000;
$(function() {
$(function() { setTimeout( reloadDiv, timeToReload ); });
function reloadDiv() { $('#live').load(location.href);}
});
</script>
これがお役に立てば幸いです。