例如,我主要用PHP编程。我今天能做些什么来防止我的程序在2038年由于unix时间戳耗尽而爆炸?我希望看到一些特定的算法、函数或逻辑可以防止这个问题。谢谢。
将时间戳存储为64位或更高的整数。我确信MySQL会在那时更新,所以TIMESTAMP
不是32位的。至于PHP,如果你在64位服务器上,我不认为有任何问题。
除非你打算在接下来的25年里使用32位服务器或PHP二进制文件,否则我认为这不会是一个问题。
PHP是一种解释性语言,所以当你写$stamp = 1358425440;
时,它只是PHP读入的一串文本,然后根据PHP的编译方式分配X字节的内存来存储它。因此,如果您将PHP二进制文件更新为支持64位整数的二进制文件,则无需更改代码。至少在理论上是这样。我们都知道PHP是如何喜欢改变常用函数和弃用一些东西的。
我所能看到的唯一考虑是在PHP之外存储整数值,即。在mySQL。在这种情况下,您只需要确保将时间戳存储为UNSIGNED INT、BIGINT或DATETIME。
SIGNED int将于2038年1月19日星期二03:14:07 GMT结束,但UNSIGNED int将持续到2006年2月7日星期日06:28:15 GMT。
变化
// 32 bit
int timestampSec
// 64bit
long timestampSec