|
|
|
Всем привет!
Пишу скрипт, обрабатывающий данные из файла. Файл весит 4,8 мегабайта, целиком помещается в переменную.
Проблема в том, что скрипт не хочет работать с такой большой переменной.
Уменьшаю размер файла до 124 килобайта - отлично работает.
Возвращаю данные до 4,8 мега - вновь не хочет работать.
Перегонять в БД не получится, т.к. там неструктурированный контент, одна большая кучка текста.
Подскажите, что можно сделать, какие настройки php.ini покрутить, чтобы скрипт мог обрабатывать такую большую переменную?
Время выполнения скрипта стоит безлимитно:
Код: |
set_time_limit (0);
ini_set('max_input_time', '0');
|
Кодировка файла ASCII.
Данные беру file_get_contents().
Большое спасибо! |
|
|
|
|
|
ini_set("memory_limit","128M");
Спасет отца русской демократии |
|
|
|
|
|
JM, не, не помогает, я пробовал и в скрипте задавать размер, и в php.ini.
Наверное, придется делить файлы на несколько, чтобы мог обработать их скрипт. |
|
|
|
|
|
|
Yabuti, А какая ошибка вылезает или просто ничего не вылезает?
Я читал и по 10мб файлы как помню
Сделай filesize($file_loc)
Имя должно совпадать. |
|
|
|
|
|
JM, по размеру файла ошибку или варнинг не выдает, а вот дальше идет его сортировка, там выдает ошибку, что нет аргумента для выполнения оператора.
filesize() выдает результат: 5126914.
Я поделил файл на 5 файлов по 1,2 мега и он нормально их обработал.
Не знаю, почему не хочет такие большие файлы обрабатывать, в настройках-то размер памяти большой.
redline, не, не вариант, т.к. там куча текста, так бы я его вообще в БД загнал и через SQL-запросы работал. |
|
|
|
|
|
error_reporting(255);
и еще разок глянь че выдаст |
|
|
|
|
|
JM, выдает Undefined variable для строки, где выполняю функцию names_to_uppercase() для массива (заменяет названия стран на названия с заглавной буквы).
Странно, но до этого массив обрабатывается стандартными функциями strtolower() и ucfirst() и на них ошибку не выдает.
Да и ладно, самое главное, работает с файлами до 1,2 мегабайта и нормально |
|
|
|
|
|
|
|