如何在保留文件原始时间戳的同时使用PHP从zip文件夹中提取文件?

时间:2014-05-12 02:34:41

标签: php timestamp zip

我的服务器上有一个zip文件夹,其中包含复杂的文件结构和数百个具有不同时间戳的文件。

我一直在使用php ZipArchive来提取我需要的一切,除了提取的所有时间戳之外,它的工作效果非常好。当前日期/时间。

  

如何在保留时使用PHP从zip文件夹中提取文件   文件原始时间戳?

3 个答案:

答案 0 :(得分:0)

您可以尝试tar.gz格式。如果您使用Windows,可以使用7 zip

如果您使用Linux,则有tar default command。 或者php语法http://www.php.net/manual/en/phardata.extractto.php

它们都会保留原始时间戳。

答案 1 :(得分:0)

我找不到用zip文件夹做我想要的方法。

相反,我创建了一个.tar.gz文件,并使用Archive_Tar类来提取文件夹和文件。要使用Archive_Tar,服务器需要运行PHP 5.3+并安装PEAR。

require_once 'Archive/Tar.php'; 

$path = '';
$import_file_path = $path."/report_import.tar.gz";

if(file_exists($import_file_path)){

    $tar = new Archive_Tar($import_file_path, true);
    $result = $tar->extract($path);
}

答案 2 :(得分:0)

没有通过PHP ZipArchive库直接提取文件同时保留存档中的原始时间戳的方法。但是,通过阅读“mtime”,可以从存档中读取存档上次修改时间戳中的每个文件。通过调用ZipArchive::statName()返回的变量。您可以为每个文件存储此结果,然后使用PHP的touch()函数手动设置文件系统上解压缩文件的时间戳。

使用exec()调用perl -wE'symlink "FILE.txt", "link_to_FILE.txt" or warn "Cant make it: $!"' 或其他工具可能会更好,默认情况下会保留时间戳或使用简单的选项参数。