Maison >développement back-end >tutoriel php >Problème de l'année 2038 : comment pouvons-nous empêcher une distorsion temporelle technologique ?

Problème de l'année 2038 : comment pouvons-nous empêcher une distorsion temporelle technologique ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-15 10:51:09738parcourir

Year 2038 Problem: How Can We Prevent a Technological Time Warp?

Bogue de l'année 2038 : qu'est-ce que c'est et comment le résoudre

Qu'est-ce que le problème de l'année 2038 ?

Le problème de l'année 2038 affecte les logiciels et les systèmes qui stockent les dates sous forme de signatures 32 bits nombres entiers, représentant le nombre de secondes écoulées depuis 00:00:00 UTC le 1er janvier 1970. Lorsque le compteur dépasse sa valeur maximale (2 147 483 647) le 19 janvier 2038 à 03:14:07 UTC, il "boucle" pour un nombre négatif, entraînant un chronométrage incorrect.

Pourquoi et quand Se produire ?

Ce problème survient en raison de la capacité limitée d'un entier de 32 bits à représenter une large plage de dates. Lorsque le compteur atteint sa valeur maximale, il interprète le temps excédentaire comme une date du 13 décembre 1901.

Comment résoudre le problème de l'année 2038

Utilisez des types de données longs :
Mettez à niveau votre logiciel pour utiliser des types de données entiers 64 bits pour le stockage des dates, offrant ainsi une plage de temps considérablement étendue.

Solutions spécifiques à MySQL :

  • Pour MySQL, envisagez d'utiliser le type de colonne DATE pour stocker les dates uniquement.
  • Pour une plus grande précision, utilisez DATETIME au lieu de TIMESTAMP. Notez que DATETIME ne stocke pas les informations de fuseau horaire, votre application doit donc les gérer.
  • Mettez à niveau vers MySQL 8.0.28 ou supérieur, qui assure la compatibilité avec le problème Y2038.

Alternatives à TIMESTAMP

Dans les bases de données, pensez à utiliser des types de données 64 bits (par exemple, long long dans GNU C) ou extension BCmath en PHP pour stocker les dates.

Atténuation des risques dans les applications existantes

Pour éviter les problèmes dans les applications existantes utilisant TIMESTAMP :

  • Convertissez TIMESTAMP en DATETIME en créant une colonne temporaire, en la mettant à jour avec les données converties, et en supprimant la colonne temporaire.

Cas d'utilisation potentiels

Même avant 2038, les systèmes stockant les dates futures (par exemple, les dates de naissance, les hypothèques à long terme) peuvent rencontrer des erreurs, car TIMESTAMP ne couvre que la plage 1970-2038.

Ressources pour plus d'informations :

  • [Problème de l'année 2038](https://en.wikipedia.org/wiki/Year_2038_problem)
  • [Internet prendra fin dans 30 Années](https://www.technologyreview.com/s/411029/the-internet-will-end-in-30-years/)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn