2017-11-07 17 views
0

私は、毎正時にページを更新するためのものですが、実行していないようコードを持っている...更新内容/ページ毎時

これはコードです:

<?php 

date_default_timezone_set('Australia/Sydney'); 

$date = date("i:s"); 

list($cur_min, $cur_sec) = explode(':', $date); 

$mins_left = ($cur_min == 59) ? 0 : 60 - $cur_min; 
$secs_left = 60 - $cur_sec; 

$time=($mins_left*60+$secs_left)*1000; 

?> 

<script type="text/javascript"> 
setInterval("refresh()",<?php echo $time; ?>); 
function refresh(){ 
    window.location = location.href; 
} 
</script> 

ユーザーがページにアクセスしたときからではなく、サーバーのクロックをオフにする必要があります。それだけですべての内容を更新することができれば

Idealyは、素晴らしいだろう「地域性」という名前のクラスで標識DIV ...

答えて

0

PHPでDateTimeを使用し、簡単な変換でタイムスタンプを使用します。

$date = new \DateTime(strtotime(time()), new \DateTimeZone("Australia/Sydney"))); 
$date->add(new \DateInterval('PT1H')); 
$time = $date->format('U') % 3600; 

そしてJS用:

var time = (Math.round((new Date()).getTime()/1000) % 3600); 
if(time > <?= $time ?>){ 
    var rtime = time - <?= $time ?>; 
} else { 
    var rtime = <?= $time ?> - time; 
} 

setInterval(function(){ 
    window.location.reload(1); 
},rtime * 1000); 

しかし、なぜイムわからない:それはわずか1時間後にリフレッシュ(など)になるよう

<meta http-equiv="refresh" content="3600"> 

が十分でないときのユーザーはページを入力しますが、実際にはどのタイムゾーンでも問題ありません。

+0

私はこれを試してみます、ありがとうございます@ Xorifelse! 新しいコンテンツが60分ごとに生成されるため、1時間に読み込むコンテンツが必要です...メタリフレッシュは着陸してから開始しないので、3:23に上陸した場合は4:23に更新されますか? –

+0

はい、それははるかに簡単です。このコードは、クライアントが正しい時間を過ごしているかどうかにも依存しています。しかし、私は目を覚ましてコードを読んで、その問題をほぼ完全に修正する非常に簡単な方法を見ました:モジュロ!それは1時間以上の時間差で問題を解決するためです。 – Xorifelse

0

は、JavaScriptの一部のためにこのコードを試してみてください。

function refresh(){ 
    window.location.reload(); 
} 
setTimeout(refresh, <?php echo $time; ?>); 

I 「それはあなたの問題を解決するかどうか分からないが、私はいくつかの変更を試してみました:

  • window.location.reload()は仕方によって、に単純化することができた、(window.location = location.hrefよりも明示的です)
  • setTimeout代わりのsetInterval爽やかが何らかの理由で再び失敗した場合、あなたは
  • に再びリフレッシュしようとしたくないのでがないことを確認するために、関数の定義の後にsetTimeoutコールを置きます機能がまだ定義されていないという問題があります。

お試しください。そのコードがまだ機能しない場合は、生成されたHTMLを見て、$timeの値が表示されていることを確認してください。また、ブラウザのコンソールでエラーがないか確認してください。

ところで、変数$timeの名前を$ms_until_start_of_hourに変更した場合、コードはより明確になります。

関連する問題