0

我有一个简单的文件来返回当前服务器时间,这是我的代码

<?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?由于它只是一个只有日期时间的小文件,它不应该使用很多资源......

4

2 回答 2

1

在您的更新中,我看到您正在使用它AJAX来检索此数据,因此这里有一些调试技术:

  • 始终物理访问有问题的 URL,看看它是否表现相同
  • $.ajax你应该设置cache: false
  • $.ajax您可以手动附加您的 URL 与 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 浏览器中的网络选项卡 调试工具
于 2013-10-21T19:59:49.243 回答
0

我设法让它工作,而不是让脚本从 php 文件中获取日期,我只是使用 javascript 日期函数以我需要的格式和时区返回日期。

感谢您的建议

于 2013-10-21T19:53:24.570 回答