Rumah >pembangunan bahagian belakang >tutorial php >Apakah Masalah Tahun 2038 dan Bagaimana Kita Boleh Mengelaknya?

Apakah Masalah Tahun 2038 dan Bagaimana Kita Boleh Mengelaknya?

Susan Sarandon
Susan Sarandonasal
2024-12-15 18:54:11978semak imbas

What is the Year 2038 Problem and How Can We Avoid It?

Pepijat Tahun 2038: Panduan Komprehensif

Pepijat tahun 2038 ialah kemungkinan kerosakan perisian yang mungkin timbul pada sistem yang menggunakan 32-bit yang ditandatangani integer untuk menyimpan masa sistem sebagai bilangan saat sejak 1 Januari 1970. Berikut adalah butiran terperinci pecahan:

Apakah Masalah Tahun 2038?

Apabila masa melebihi 03:14:07 UTC pada 19 Januari 2038, pembilang 32-bit yang mewakili saat sejak zaman UNIX akan "menggulung", menyimpan nilai negatif yang ditafsirkan sebagai masa dalam bulan Disember 1901.

Punca dan Akibat

Ini berlaku kerana nilai maksimum integer 32-bit akan diatasi. Sistem yang bergantung pada perwakilan masa ini akan menyalahtafsir tarikh akan datang sebagai tarikh lalu, yang berpotensi menyebabkan ralat dan kegagalan.

Penyelesaian:

  • Gunakan jenis data yang panjang (64 bit atau lebih tinggi).
  • Dalam MySQL atau MariaDB, pertimbangkan untuk menggunakan DATE (untuk tarikh sahaja) atau DATETIME (untuk tarikh dan masa) bukannya TIMESTAMP.
  • Rujuk halaman Wikipedia mengenai Masalah Tahun 2038 untuk penyelesaian tambahan.
  • Kemas kini MySQL kepada versi 8.0.28 atau lebih baru.

Alternatif:

  • Gunakan jenis besar (cth., 64-bit) dalam pangkalan data.

Kes Penggunaan Berpotensi Pecah:

  • MySQL DATETIME mempunyai julat yang lebih sempit (1000-9999) daripada TIMESTAMP (1970-2038), yang membawa kepada potensi isu dengan tarikh selepasnya 2038, seperti tarikh lahir dan tarikh hadapan masa hadapan.

Memperbaiki Semula Aplikasi Sedia Ada:

  • Untuk aplikasi PHP menggunakan TIMESTAMP, pertimbangkan untuk menukar lajur kepada DATETIME . Ikuti langkah yang disediakan dalam bahagian jawapan untuk melaksanakan penukaran ini.

Sumber:

  • Masalah Tahun 2038 (Wikipedia): https:// my.wikipedia.org/wiki/Year_2038_problem
  • Internet Akan Berakhir dalam 30 Tahun: https://www.therregister.com/2022/08/06/year_2038_bug_web/

Atas ialah kandungan terperinci Apakah Masalah Tahun 2038 dan Bagaimana Kita Boleh Mengelaknya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn