FTP:我可以覆盖一个文件并维护它的修改日期吗?


FTP: Can I overwrite a file and maintain it's modified date?

我的服务器上有数百个mp3文件。每个文件的modified-date很重要,因为它是由PHPs的filemtime获取的,以表示它的上传日期(因为如果不将值存储在数据库中,就无法确定上传时间)。

我遇到了一个音频问题,其中所有文件需要规范化并重新上传到服务器。当然,这会将每个文件的modified-date更改为"today"。我需要每个文件保留它的原始modified-date

我不确定这是一个软件推荐问题还是一个编程问题,所以如果这是一个错误的。se站点,我很抱歉。这可能吗?

您应该能够通过touch: http://php.net/manual/en/function.touch.php设置修改后的时间

这要求PHP> 5.3,并且运行脚本的用户(可能是你的web用户,除非你从cli运行它)需要对文件有写权限。

您有两个实现选项:

  1. 将文件名及其mtime存储在临时存储(文件或数据库表)中。当你完成上传后,运行所有的文件,并使用touch重置mtime

  2. 上传文件时,检查文件是否已经存在。如果是,在一个临时变量中获取mtime,覆盖文件,然后用正确的mtime修改它。

我知道这不是您想要的答案,但是开始将此信息存储在数据库中比依赖上次修改的日期更有意义。通过这种方式,您可以向用户显示他们需要知道的日期,并保留修改的真实日期。

这样的方法也为您提供了更多的灵活性。

应@Snailer的要求-为了结束问题