Maison >développement back-end >tutoriel php >Quel est le problème de l'an 2038 et comment pouvons-nous l'éviter ?

Quel est le problème de l'an 2038 et comment pouvons-nous l'éviter ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-15 18:54:11972parcourir

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

Bogue de l'année 2038 : un guide complet

Le bug de l'année 2038 est un dysfonctionnement logiciel potentiel qui peut survenir sur les systèmes utilisant du 32 bits signé entiers pour stocker l'heure du système sous forme de nombre de secondes depuis le 1er janvier 1970. Voici un aperçu détaillé répartition :

Quel est le problème de l'année 2038 ?

Une fois que l'heure dépasse 03:14:07 UTC le 19 janvier 2038, le compteur 32 bits représentant l'heure secondes depuis que l'époque UNIX va "boucler", stockant des valeurs négatives interprétées comme une heure en décembre 1901.

Cause et conséquences

Cela se produit parce que la valeur maximale de l'entier 32 bits aura été dépassée. Les systèmes qui s'appuient sur cette représentation temporelle interpréteront à tort les dates futures comme des dates passées, ce qui pourrait provoquer des erreurs et des échecs.

Solutions :

  • Utilisez des types de données longs (64 bits ou plus).
  • Dans MySQL ou MariaDB, pensez à utiliser DATE (pour la date uniquement) ou DATETIME (pour la date et l'heure) au lieu de TIMESTAMP.
  • Consultez la page Wikipédia sur le problème de l'année 2038 pour des solutions supplémentaires.
  • Mettez à jour MySQL vers la version 8.0.28 ou ultérieure.

Alternatives :

  • Employer de grands types (par ex., 64 bits) dans les bases de données.

Cas d'utilisation potentiels :

  • MySQL DATETIME a une plage plus étroite (1000-9999) que TIMESTAMP ( 1970-2038), entraînant des problèmes potentiels avec des dates au-delà de 2038, comme les dates de naissance et les dates futures.

Rénovation des applications existantes :

  • Pour les applications PHP utilisant TIMESTAMP, envisagez de convertir la colonne en DATETIME. Suivez les étapes fournies dans la section de réponse pour exécuter cette conversion.

Ressources :

  • Problème de l'année 2038 (Wikipedia) : https:// en.wikipedia.org/wiki/Year_2038_problem
  • Internet prendra fin dans 30 ans : https://www.theregister.com/2022/08/06/year_2038_bug_web/

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