PHP, очень большая переменная (4,8 МБ), не хочет работать
Новая тема Написать ответ
# Пт Июл 04, 2014 5:13 pmYabuti Зарег.: 28.11.2008 ; Сообщ.: 16263Ответить с цитатой
Всем привет!
Пишу скрипт, обрабатывающий данные из файла. Файл весит 4,8 мегабайта, целиком помещается в переменную.
Проблема в том, что скрипт не хочет работать с такой большой переменной.
Уменьшаю размер файла до 124 килобайта - отлично работает.
Возвращаю данные до 4,8 мега - вновь не хочет работать.

Перегонять в БД не получится, т.к. там неструктурированный контент, одна большая кучка текста.

Подскажите, что можно сделать, какие настройки php.ini покрутить, чтобы скрипт мог обрабатывать такую большую переменную?

Время выполнения скрипта стоит безлимитно:
Код:
set_time_limit (0);
ini_set('max_input_time', '0');



Кодировка файла ASCII.

Данные беру file_get_contents().

Большое спасибо! Drinks or Beer
# Сб Июл 05, 2014 5:31 pmJM Зарег.: 25.08.2006 ; Сообщ.: 1382Ответить с цитатой
ini_set("memory_limit","128M");
Спасет отца русской демократии Smile
# Вс Июл 06, 2014 12:16 amYabuti Зарег.: 28.11.2008 ; Сообщ.: 16263Ответить с цитатой
JM, не, не помогает, я пробовал и в скрипте задавать размер, и в php.ini.
Наверное, придется делить файлы на несколько, чтобы мог обработать их скрипт.
# Вс Июл 06, 2014 8:47 amredline Зарег.: 10.08.2007 ; Сообщ.: 2Ответить с цитатой
Читать файл по-строчно?
# Вс Июл 06, 2014 9:46 amJM Зарег.: 25.08.2006 ; Сообщ.: 1382Ответить с цитатой
Yabuti, А какая ошибка вылезает или просто ничего не вылезает?
Я читал и по 10мб файлы как помню Smile
Сделай filesize($file_loc)
Имя должно совпадать.
# Вс Июл 06, 2014 4:50 pmYabuti Зарег.: 28.11.2008 ; Сообщ.: 16263Ответить с цитатой
JM, по размеру файла ошибку или варнинг не выдает, а вот дальше идет его сортировка, там выдает ошибку, что нет аргумента для выполнения оператора.
filesize() выдает результат: 5126914.

Я поделил файл на 5 файлов по 1,2 мега и он нормально их обработал.
Не знаю, почему не хочет такие большие файлы обрабатывать, в настройках-то размер памяти большой.

redline, не, не вариант, т.к. там куча текста, так бы я его вообще в БД загнал и через SQL-запросы работал.
# Вс Июл 06, 2014 4:58 pmJM Зарег.: 25.08.2006 ; Сообщ.: 1382Ответить с цитатой
error_reporting(255);
и еще разок глянь че выдаст
# Вс Июл 06, 2014 5:11 pmYabuti Зарег.: 28.11.2008 ; Сообщ.: 16263Ответить с цитатой
JM, выдает Undefined variable для строки, где выполняю функцию names_to_uppercase() для массива (заменяет названия стран на названия с заглавной буквы).
Странно, но до этого массив обрабатывается стандартными функциями strtolower() и ucfirst() и на них ошибку не выдает.
Да и ладно, самое главное, работает с файлами до 1,2 мегабайта и нормально :thup:
Новая тема Написать ответ    ГЛАВНАЯ ~ ТЕХНИЧЕСКИЕ ВОПРОСЫ
 
Любое использование материалов, размещенных на ArmadaBoard.com, без разрешения владельцев ArmadaBoard.com запрещено.