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