PHP Zip Archive спорадически создает несколько файлов - PullRequest
0 голосов
/ 11 января 2011

У меня есть PHP-скрипт (работает под управлением PHP 5.2 на Apache 2.2), который создает zip-архив файлов для загрузки пользователем.Кажется, все работает просто отлично;единственная проблема, которую я имею, состоит в том, что периодически несколько файлов будут создаваться, прежде чем архив ZIP будет успешно завершен.Пример:

имя_архива.zip

имя_архива.zip.a09600

имя_архива.zip.b09600

имя_архива.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 голосов
/ 13 января 2011

Оказалось, что это действительно проблема, связанная с сеансом;данные сеанса не сохраняются при первом проходе из-за вызовов функции, расположенной выше в коде, который вызывает метод session_write_close () несколько раз (обход известной ошибки с exec ())Проблема заключалась в сохранении / извлечении данных после того, как сеанс снова запустился после этого.

...