在我的页脚,我想添加一些东西,如“上次更新xx/xx/200x”,这个日期是最后一次某个mySQL表已更新。
最好的方法是什么?是否有检索最近更新日期的函数?每次需要这个值时,我都应该访问数据库吗?
在我的页脚,我想添加一些东西,如“上次更新xx/xx/200x”,这个日期是最后一次某个mySQL表已更新。
最好的方法是什么?是否有检索最近更新日期的函数?每次需要这个值时,我都应该访问数据库吗?
当前回答
当查询不可用时,将查询缓存在全局变量中。
创建一个网页,在更新缓存时强制重新加载缓存。
将对重新加载页面的调用添加到部署脚本中。
其他回答
当查询不可用时,将查询缓存在全局变量中。
创建一个网页,在更新缓存时强制重新加载缓存。
将对重新加载页面的调用添加到部署脚本中。
在MySQL的新版本中,你可以使用information_schema数据库来告诉你什么时候另一个表被更新了:
SELECT UPDATE_TIME
FROM information_schema.tables
WHERE TABLE_SCHEMA = 'dbname'
AND TABLE_NAME = 'tabname'
这当然意味着打开到数据库的连接。
另一种选择是每当MySQL表更新时“触摸”一个特定的文件:
数据库更新:
以O_RDRW模式打开时间戳文件 再次关闭
或者
使用touch(),相当于PHP中的utimes()函数,来更改文件时间戳。
页面显示:
使用stat()读取文件修改时间。
最简单的方法是检查磁盘上表文件的时间戳。例如,您可以在数据目录下检查
cd /var/lib/mysql/<mydatabase>
ls -lhtr *.ibd
这将为您提供所有表的列表,其中的表是最后一次修改该表的时间、最早的时间。
我没有information_schema数据库,使用mysql版本4.1.16,所以在这种情况下,你可以查询这个:
SHOW TABLE STATUS FROM your_database LIKE 'your_table';
它将返回这些列:
| Name | Engine | Version | Row_format | Rows | Avg_row_length
| Data_length | Max_data_length | Index_length | Data_free | Auto_increment
| Create_time | Update_time | Check_time | Collation
| Checksum | Create_options | Comment |
如您所见,有一列名为“Update_time”,它显示了your_table的最后一次更新时间。
a)它会显示你所有的表和最近的更新日期
SHOW TABLE STATUS FROM db_name;
然后,你可以进一步询问具体的表格:
SHOW TABLE STATUS FROM db_name like 'table_name';
b)在上面的例子中,你不能在'Update_time'上使用排序,但是使用SELECT你可以:
SELECT * FROM information_schema.tables WHERE TABLE_SCHEMA='db_name' ORDER BY UPDATE_TIME DESC;
要进一步询问特定的表:
SELECT * FROM information_schema.tables WHERE TABLE_SCHEMA='db_name' AND table_name='table_name' ORDER BY UPDATE_TIME DESC';