fwrite () более 2 ГиБ? [Дубликат]

На этот вопрос уже есть ответ здесь:

Ограничена ли fopen () файловой системой? 4 ответа

У меня есть набор файлов, которые я хочу объединить (каждый представляет часть из нескольких частей загрузки).

Каждый разделенный файл имеет размер около 250 МБ, и у меня их переменное количество.

Моя логика конкатенации проста:

if (is_resource($handle = fopen($output, 'xb')) === true)
{
    foreach ($parts as $part)
    {
        if (is_resource($part = fopen($part, 'rb')) === true)
        {
            while (feof($part) !== true)
            {
                fwrite($handle, fread($part, 4096));
            }

            fclose($part);
        }
    }

    fclose($handle);
}

Мне потребовалось некоторое время, чтобы отследить его, но, по-видимому, всякий раз, когда у меня есть более 8 отдельных частей (общим объемом 2 ГБ), мой выходной файл усекается до 2147483647 байт (сообщаетsprintf('%u', $output)).

Я полагаю, это из-за какого-то 32-битного внутреннего счетчика, используемогоfopen() или жеfwrite().

Как я могу обойти эту проблему (желательно используя только PHP)?

Ответы на вопрос(1)

Ваш ответ на вопрос