2013-10-21 22 views
0

我有一個簡單的文件,以返回當前服務器時間,這是我的代碼日期時間返回HTTPS錯誤值和正確的值在HTTP

<?php 
$now = new DateTime(null, new DateTimeZone('Asia/Kolkata')); 
echo $now->format("M j, Y H:i:s O")."\n"; 
?> 

當我通過HTTP其顯示在右側打開的文件但是當我用https打開時,時間從幾秒到幾乎30分鐘。

起初,我認爲這是一個緩存問題,但即使我禁用緩存這是持久的。

編輯

的時間稱爲這個腳本是在主PHP文件

<script type="text/javascript"> 
function serverTime() { 
    var time = null; 
    $.ajax({url: 'https://url/timeset.php', 
     async: false, dataType: 'text', 
     success: function(text) { 
      time = new Date(text); 
     }, error: function(http, message, exc) { 
      time = new Date(); 
    }}); 
    return time; 
} 

</script> 

如果腳本調用的日期時間其返回日期時間當PHP文件後打開在瀏覽器。因此,如果有人打開腳本所在的頁面,那麼上面的代碼返回的日期時間是錯誤的,並且當該頁面刷新時,返回的日期時間不會改變,仍然返回不正確的即舊的日期時間。

有什麼辦法可以讓我每隔一秒鐘刷新php? 由於它只有一個小文件,只有日期時間它shoudnt使用很多資源...

+0

我剛剛在我的服務器上測試了上述代碼。它同時返回HTTP和HTTPS。我認爲這是唯一的,就是緩存。你是否確定*所有緩存確實關閉? –

+0

如果使用'date_default_timezone_set('Asia/Kolkata'),會發生什麼? echo date(「M j,YH:i:s O);'? – MonkeyZeus

+0

這個應用程序是否部署到Web服務器中的多個服務器上?如果是這樣,也許你只是碰到一個不同的服務器,它的時鐘設置錯誤 –

回答

1

在您的更新我看到你正在使用AJAX那麼這裏獲取這個數據有一些調試技術:

  • 始終親自訪問相關網址和看看它是否行事相同
  • $.ajax你應該設置cache: false
  • $.ajax您可以手動添加您的網址以GET參數總是取新鮮這樣url: 'https://url/timeset.php?fresh='+randomNumberFunction()
  • 在PHP在腳本的頂部設置一些標題:header("Expires: Mon, 1 Jan 1990 00:00:00 GMT"); header("Cache-Control: no-store, no-cache, must-revalidate");
  • 得到您的Web瀏覽器的調試工具,網絡選項卡相識
0

我設法讓它的工作,而不是有一個腳本fetsh從PHP文件的日期我只是使用JavaScript日期函數以我需要的格式和時區返回日期。

感謝您的建議

相關問題