1

这是一个真正令人头疼的问题 - 任何帮助都将不胜感激。

我一直在使用 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);
            }


 }
}
4

1 回答 1

0

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

对于其他遭受同样痛苦的人,通过增加服务器磁盘分配来解决问题。我有一个相当老的计划,在一个新的国家数据库出现之前效果很好,该数据库将存储量增加了 10 倍。区区 100MB 的余量意味着服务器在吐出假人之前只能做这么多。

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

于 2013-06-04T07:49:15.120 回答