Php DateTime在https中返回错误值,在http中返回正确值
我有一个简单的文件返回当前服务器的时间,这是我的代码Php DateTime在https中返回错误值,在http中返回正确值,php,datetime,https,Php,Datetime,Https,我有一个简单的文件返回当前服务器的时间,这是我的代码 <?php $now = new DateTime(null, new DateTimeZone('Asia/Kolkata')); echo $now->format("M j, Y H:i:s O")."\n"; ?> 当我通过http打开文件时,它会显示正确的时间,但当我使用https打开文件时,时间从几秒钟缩短到近30分钟 起初我认为这是一个缓存问题,但即使在禁用缓存后,这仍然是持久的 编辑 时间由主php
<?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>
函数serverTime(){
var-time=null;
$.ajax({url:'https://url/timeset.php',
async:false,数据类型:“text”,
成功:函数(文本){
时间=新日期(文本);
},错误:函数(http、消息、exc){
时间=新日期();
}});
返回时间;
}
如果脚本调用日期时间,则返回上次在浏览器中打开php文件时的日期时间。因此,如果有人打开脚本所在的页面,则上述代码返回的日期时间是错误的,并且当刷新该页面时,返回的日期时间不会改变,仍然返回不正确的日期时间,即旧的日期时间
有没有什么方法可以让我每隔一秒钟左右刷新一次php?
因为它只是一个只有日期时间的小文件,所以不应该占用太多资源…我设法让它工作,而不是让脚本从php文件中提取日期,我只是使用javascript日期函数以我需要的格式和时区返回日期
感谢您在更新中的建议,我看到您正在使用
AJAX
检索此数据,因此以下是一些调试技术:
- 始终亲自访问有问题的URL,查看其行为是否相同
- 在
中,您应该设置$.ajax
缓存:false
- 在
中,您可以手动在URL后面附加一个GET参数,以始终像下面这样获取新鲜的$.ajax
URL:'https://url/timeset.php?fresh=“+randomNumberFunction()
- 在PHP中,在脚本顶部设置几个标题:
header(“Expires:Mon,1990年1月1日00:00:00 GMT”);标头(“缓存控制:无存储,无缓存,必须重新验证”)代码>
- 熟悉web浏览器调试工具中的“网络”选项卡
date\u default\u timezone\u set('Asia/Kolkata'),会发生什么情况;回音日期(“MJ,YH:i:SO)
?此应用程序是否部署到一个web场中的多个服务器上?如果是这样,可能您只是在访问另一个时钟设置错误的服务器。@JohnCrawford是的,我非常确定缓存我们是关闭的。当我在浏览器中打开网页并在刷新后显示不正确的时间时,会显示正确的时间。是否有任何方法可以确保这一点缓存关闭了?@MonkeyZeus我尝试了代码,但问题是一样的。