PHP ZipArchive无法正确提取CSV文件

时间:2013-05-19 02:26:17

标签: php zip extraction ziparchive

真正令人头疼的是 - 任何帮助都会感激不尽。

我一直在使用zipArchive库从zip中提取csv文件。

奇怪的是,它只能正确提取40个文件。索引为40或更高的文件显示为空文件,文件0-39显示为完整。

无论文件组合和文件大小如何,都是如此。我已经尝试从zip中删除第39个文件和第40个文件,问题就在于移动。无论我使用哪种文件组合,它都会正确提取40个文件,然后就会死掉。

感谢这个论坛,我尝试使用Shell Exec完全相同的结果。 我还尝试一次一个地提取文件,使用仅包含csv文件的zip和具有多种不同文件类型的zip。总是只提取40个。

这是一个可疑的圆形数字,它肯定是某个我无法找到的设置或其他错误。

对于它的价值,解压缩代码如下:

    $zip = new ZipArchive;
    if ($zip->open('Directory/zipname.zip') == TRUE) {
     for ($i = 0; $i < $zip->numFiles; $i++) {
        $filename = $zip->getNameIndex($i);
         if(substr(strrchr($filename,'.'),1,3)=="csv")
        {
         $zip->extractTo('Directory/',$filename);
        }
        }
    }

我还尝试了以下使用不同方法的相同结果:-(

$zip2 = new ZipArchive;
if ($zip2->open('Directory/zipname.zip') == TRUE) {
 for ($i = 0; $i < $zip2->numFiles; $i++) {
     $filename = $zip2->getNameIndex($i);
     if(substr(strrchr($filename,'.'),1,3)=="csv")
            {
            $content=$zip2->getFromIndex($i);
            $thefile=fopen("directory/filename","w");
            fwrite($thefile,$content);
            fclose($thefile);
            }


 }
}

1 个答案:

答案 0 :(得分:0)

最后找到了答案。感谢所有试图提供帮助的人。

对于遭受同样困扰的其他人,通过增加服务器磁盘分配来解决问题。我做了一个相当古老的计划,直到新的国家数据库出现,存储量增加了10倍。 一个可怜的100MB容差意味着服务器只会在吐出假人之前做这么多。

有趣的是,尝试其他文件操作时出现了类似的问题 - 无论每个文件的大小如何,它似乎都限制为每个脚本40个文件操作。