Проблема с gzfile

outtime
На сайте с 04.05.2008
Offline
197
302

В общем, на своем самописном движке столкнулся с проблемой с функцией gzfile() - она почему-то обрезает данные, в отличие от обычного file() для такого же, но разархивированного файла.

Есть у меня база данных на файлах - она представляет собой txt файл с разделителями (типа уникальной последовательности "++||++", чтобы элементы потом вытащить через explode).

Этот файл при инсталляции движка архивируется в gz для экономии места, а потом в процессе генерации страниц используются его данные при помощи gzfile как раз.

Выяснилось следующее - что оператор gzfile, который читает сразу мою базу данных в массив - каким-то образом обрезает содержимое из-за чего вся работоспособность движка становится неадекватной, съезжают все элементы и т.п.

То есть есть файл txt.gz примерно такой:

элемент 1++||++элемент 2++||++элемент 3++||++

Дальше в обработке внутри большого цикла выполняется функция


$file_database=gzfile(этот самый txt.gz);
$massiv[$i][$j]=explode ('++||++', $file_database[$i]);

т.е. в этот $massiv пишутся необходимые для дальнейшей работы параметры из txt-базы

Так вот, при использовании архива и функции gzfile - текст, и соответственно, массив - обрезаются. Примерно на 5000 символов.

А если перепрописать вручную чтение в массив простого уже разархивированного руками txt, через file(), то читается всё как надо и нигде ничего не режется.

В информации по данной функции я характеристики и ограничений на размеры файлов не нашел.

Может кто-нибудь подскажет, что с этим можно сделать, кроме переписывания движка?

Есть ли возможность заставить gzfile обрабатывать весь файл без ограничений?

Или придется промежуточные костыли делать? :(

Предлагаю воспользоваться моими услугами корректора. Проверю и уберу все ошибки, поправлю грамматику и склонения, сделаю текст лучше и читабельнее. Высокая скорость работы, цена 20 р за 1000 символов.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий