たとえば、私は主に PHP でプログラミングしています。Unix タイム スタンプが切れたために 2038 年にプログラムが爆発するのを防ぐために、今日何ができますか? この問題を防ぐために機能する特定のアルゴリズム、関数、またはロジックを確認したいと思います。ありがとう。
3 に答える
タイムスタンプを 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 は 2106 年 2 月 7 日 06:28:15 GMT まで存続します。
変化する
// 32 bit
int timestampSec
に
// 64bit
long timestampSec
内部ストレージ用。