Мой php-скрипт работает на CentOS 5.6 и PHP 5.2.12 с использованием ZipArchive () и успешно создает .zip-файлы размером более 1,6 ГБ, но не для более крупного архива объемом 2 ГБ или более - PHP прерывается без явной ошибки. Ничего в журнале ошибок PHP или stderr. Сценарий выполняется в строке cmd, а не в интерактивном режиме.
Сценарий работает около 8 минут, и временный архив увеличивается, и при проверке размера файла последний листинг показал, что размер файла tmp был 2120011776, а затем файл tmp исчезает, а сценарий PHP падает через логику и выполняет код после архив создать.
По какой-то причине top показывает, что процессор все еще находится на 95% и создает новый архивный файл tmp - он делает это, скажем, еще 5+ минут, молча останавливается и оставляет незавершенный архивный файл tmp. В этом тесте было меньше 4000 ожидаемых файлов.
Сценарий, как отмечалось, прекрасно работает при создании небольших архивных файлов.
Протестировано на нескольких разных наборах больших исходных данных - тот же результат для больших файлов.
Эта проблема звучит похоже на этот вопрос:
Ограничение размера в классе PHP zipArchive?
Я подумал, что, возможно, команда ls -l возвращает количество блоков по 2 КБ, и поэтому 2120011776 будет близко к 4 ГБ, но этот размер в байтах - размер файла xxxx.zip.tmpxx.
Спасибо!