PHP Zip Archive偶尔会创建多个文件

时间:2011-01-11 19:49:41

标签: php zip archive

我有一个PHP脚本(在Apache 2.2上运行PHP 5.2),它创建了一个文件的zip存档供用户下载。一切似乎都很好;我唯一的问题是,在ZIP存档成功完成之前,将定期创建多个文件。例如:

archive-name.zip

归档name.zip.a09600

归档name.zip.b09600

归档name.zip.c09600

每次都不会发生这种情况;仅定期 - 文件仍然创建,但有时这些额外的'文件'在完成后留在服务器上。创建ZIP存档的代码如下:

        $zip_archive = new ZipArchive();
        $zip_archive->open($archiveFullName,ZIPARCHIVE::CREATE);

        if(!file_exists($archiveFullName)) {
            foreach ($completed_file_arr as $zip_file) {
                $isFiller = substr($zip_file,-8) == "_err.txt";
                if(!$isFiller) {
                    $zip_archive->addFile($zip_file,$localname);
                } else $zip_archive->addFromString ($zip_file, "The requested source file could not be found.");
            }
        }

       while(!$zip_archive->close()) sleep(1); //ensure that the ZIP file finishes closing

1 个答案:

答案 0 :(得分:0)

事实证明这实际上是与会话相关的问题;会话数据没有在第一次传递时保存,因为在调用session_write_close()的代码中调用了更高级别的函数(使用exec()解决已知错误)。问题在于在会话开始后再次重新启动后保留/检索数据。