真正令人头疼的是 - 任何帮助都会感激不尽。
我一直在使用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);
}
}
}
答案 0 :(得分:0)
最后找到了答案。感谢所有试图提供帮助的人。
对于遭受同样困扰的其他人,通过增加服务器磁盘分配来解决问题。我做了一个相当古老的计划,直到新的国家数据库出现,存储量增加了10倍。 一个可怜的100MB容差意味着服务器只会在吐出假人之前做这么多。
有趣的是,尝试其他文件操作时出现了类似的问题 - 无论每个文件的大小如何,它似乎都限制为每个脚本40个文件操作。