我有一个网站,里面有很多图片。目前我只是将图片全部放在服务器上,然后我使用 php 获取目录中的文件并将它们全部显示在一张表中。但是,当我这样做时,图片按字母顺序显示,这是我不想要的。我希望它们显示我的插入时间。我在想我可以创建一个表格,其中一个数字字段设置为自动递增,然后是插入图片的文件名。并将图片留在服务器上。所以每次我插入图片时,它都会插入一行带有数字和文件名的行。所以当我显示时,我只显示那个数字 Desc,它应该给我最新插入的图片。这是最好的方法吗?
谢谢
听起来不错。如果您真的想获得技术知识,可以使用时间戳字段并按此排序。但是,听起来只要您在插入图像时自动递增,您的想法就可以正常工作。
如果您计划在系统中保存数千(或更多)照片,则需要在将实际图像文件存储在硬盘驱动器上时使用数据库表来存储元数据。
执行 10,000 次 I/O 命中来按日期对文件进行排序是很疯狂的。执行一个 SQL 查询以返回按日期排序的所有文件名的列表要好得多,因为 MySQL 可能能够将整个表放入内存中。
table image
{
id
user_id (if images belong to certain users)
path (the file system path and/or filename)
created (timestamp)
}
你在正确的轨道上。我会使用时间戳(类型DATETIME
)来确定图片上传的确切时间,并按此排序。递增的 ID 并不总是与插入时间相对应。
您可以通过 auto_incremented id 字段来执行此操作,或者您可以存储时间戳并以这种方式对其进行排序。任何一个都是不错的选择,只要确保您避免潜在的主键违规。
随着filemtime()
您获得文件的时间戳。因此,uasort()
在您使用 (例如) 获取文件后,可以使用 - 或其他 php 排序函数之一来定义排序readdir()
。不需要数据库。
将指向文件的指针存储在数据库中是最好的方法,并将图像保存在文件系统中。至于创建日期,您可以使用 DATETIME
它来跟踪它的创建时间,然后按照您想要的顺序查询它们。
我认为没有必要这样做。PHP 中必须有一种方法来获取所有文件列表并按创建日期排序。由于此文件将上传到您的服务器,因此 date_created 时间将是您服务器上创建的日期;因此,不需要新的表和数据库调用等。