Dans le bas de ma page, je voudrais ajouter quelque chose comme « mise à jour le xx/xx/200 x » ; avec cette date étant la dernière fois un certain mySQL table a été mise à jour. Quelle est la meilleure façon de le faire ? Y a-t-il une fonction pour récupérer la date ? Je devrais faire un accès à la base de données chaque fois que mon pied de page s’affiche ?
Réponses
Trop de publicités?Dans les versions de MySQL, vous pouvez utiliser l' information_schema
de la base de données pour vous dire quand un autre tableau a été mis à jour:
SELECT UPDATE_TIME
FROM information_schema.tables
WHERE TABLE_SCHEMA = 'dbname'
AND TABLE_NAME = 'tabname'
Cela ne veut évidemment dire l'ouverture de la connexion à la base de données.
Une alternative serait de "toucher" un fichier en particulier chaque fois que la table MySQL est mis à jour:
Sur la base de données mises à jour:
- Ouvrez votre horodatage du fichier en
O_RDRW
mode -
close
nouveau
ou sinon
- utiliser le PHP équivalent de l'
utimes()
fonction à modifier l'horodatage du fichier.
Sur l'affichage de la page:
- utiliser
stat()
lire la date de modification du fichier.
Je suis surpris que personne n’a suggéré la dernière fois mise à jour par rang de suivi :
Cela met à jour l’horodatage, même si nous ne le mentionne pas dans la mise à jour.
Maintenant vous pouvez rechercher le MAX() :
Certes, cela nécessite plus de stockage (4 octets par ligne de TIMESTAMP).
Mais cela fonctionne pour les tables InnoDB, qui `` ne.
Je n'ai pas de base de données information_schema, à l'aide de mysql version 4.1.16, dans ce cas, vous pouvez interroger ce:
show table status from your_database like 'your_table';.
Ce sera le retour de ces colonnes:
| Nom | Moteur | Version | Row_format | Lignes | Avg_row_length | Data_length | Max_data_length | Index_length | Data_free | Auto_increment | Create_time | Update_time | Check_time | Classement | Checksum | Create_options | Commentaire |
Comme vous pouvez le voir il y a une colonne appelée: "Update_time" qui vous montre la dernière mise à jour de cette table.
Espérons que cela aidera quelqu'un lors de la recherche d'une solution :)