我有一个脚本,它使用以下逻辑来查看存储的UNIX时间戳是否超过14小时:
if ($data['today'][$city]['max']['imported'] < (time() - 50400)) {
// bad stuff
} else {
// good stuff
}
在大约每隔10分钟(通过CRON工作)运行的六天左右,由于没有明显的原因,它在一天中看似随机的时间四次变成了“坏东西”。 $ data ['today'] [$ city] ['max'] ['imported']的值来自XML文件,每次脚本运行时都会转换为数组形式。有8个城市,&amp;这个计算是在循环中迭代它们(因此是$ city)。 XML存储在文本文件中。
上次发生时,我已经实现了保存$ data ['today'] [$ city] ['max'] ['imported']值,它绝对有效(即10分钟)。
有什么明显的东西我错过了吗?
此外,如果有人知道更可靠的方法来检查时间戳是否超过14小时,我将不胜感激 - 这必须在PHP 5.1.something中工作,因此无法访问DateTime类。
答案 0 :(得分:1)
我会用PHP diff()
类中的DateTime
替换该时间戳计算。如你所知,计算结果不会每年两次给出正确的结果:当夏令时导致一小时的加或减时。
除此之外,您遇到的问题很可能与您的$data['today'][$city]['max']['imported']
不正确的值或由于服务器之间的时区差异以及imported
时间戳的任何位置造成的时间戳差异来自。
答案 1 :(得分:1)
您的代码完全没问题。代码应该完美无缺地运行。我看到的唯一弱点是从xml文件中检索的$city
值。你说xml中只有8个城市,如果有来自不同城市的人,你有默认值吗?
解决问题的一种方法是在使用if语句
之前检查$data['today'][$city]['max']['imported']
的值
这样的事情会有所帮助,检查你的字符串中是否有10个字符:
if (strlen($data['today'][$city]['max']['imported'] == 10) {
//your code here
}