Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.02.2014, 00:35   #1
Jleksern
Форумчанин
 
Аватар для Jleksern
 
Регистрация: 14.10.2011
Сообщений: 137
По умолчанию Придел размера массива

Здравствуйте.
Интересует такие события.

Есть скрипт, который циклом из текстового файла закидывает строки данных в MySQL.

К примеру если текстовый файл весит 20-30 мегабайт то нормально, скрипт справится без сюрпризов.

Если к примеру 800 мегабайт файл который будет обрабатывать скриптом, скрипт не сможет обработать такой огромный массив данных и парой бывали моменты когда компьютер зависал.

Собственно , как рассчитать или по каким показателям настройки PHP стоит улучшить для того чтоб скрипт смог обрабатывать более массивные файлы.
Jleksern вне форума Ответить с цитированием
Старый 16.02.2014, 01:11   #2
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Цитата:
Если к примеру 800 мегабайт файл который будет обрабатывать скриптом, скрипт не сможет обработать такой огромный массив данных и парой бывали моменты когда компьютер зависал/
ИМХО это зависит не от настроек PHP, а от возможностей ПК. Судя по всему ему просто не хватает памяти для того, чтобы обработать такой объём информации. Согласитесь, что 800 МБ для текстовика, это как-то многовато будет.
Кстати, простите за любопытство, но зачем такие большие файлы? Большие объёмы данных гораздо удобнее хранить в БД. Не говоря уже о том, насколько с помощью СУБД их быстрее и удобнее обрабатывать.
Streletz вне форума Ответить с цитированием
Старый 16.02.2014, 02:12   #3
Jleksern
Форумчанин
 
Аватар для Jleksern
 
Регистрация: 14.10.2011
Сообщений: 137
По умолчанию

Цитата:
Сообщение от Streletz Посмотреть сообщение
ИМХО это зависит не от настроек PHP, а от возможностей ПК. Судя по всему ему просто не хватает памяти для того, чтобы обработать такой объём информации. Согласитесь, что 800 МБ для текстовика, это как-то многовато будет.
Кстати, простите за любопытство, но зачем такие большие файлы? Большие объёмы данных гораздо удобнее хранить в БД. Не говоря уже о том, насколько с помощью СУБД их быстрее и удобнее обрабатывать.
Ну совершенно верно, я в БД и загружаю данный массив для более комфортной работы с данным массивом.

Ну комп в общем не слишком мощный по потребностям сегодняшнего дня, 2Гб озу.
Однако, я так понимаю, что когда PHP открывает файл, он пытается прочитать сам файл целеком, а лишь потом обрабатывает.
Возможно кто-то придумал другую процедуру, к примеру чтоб PHP сразу брал данные из 1,2,3,4... строки, не загружая полностью весь файл в оперативную память)
Jleksern вне форума Ответить с цитированием
Старый 16.02.2014, 02:35   #4
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Цитата:
Сообщение от Jleksern Посмотреть сообщение
Ну комп в общем не слишком мощный по потребностям сегодняшнего дня, 2Гб озу.
О чём и речь. Ни много ни мало, 40% всей установленной оперативки.
А, если учесть, что в реальности имеется 2 ГБ - система -программы (включая web-сервер с php), то объём свободной оперативки оказывается гораздо скромнее.
Цитата:
Сообщение от Jleksern Посмотреть сообщение
Однако, я так понимаю, что когда PHP открывает файл, он пытается прочитать сам файл целеком, а лишь потом обрабатывает.
Смотря как открывать файл.
В помощь:
Загрузка фрагмента файла
Streletz вне форума Ответить с цитированием
Старый 19.02.2014, 00:02   #5
vasiatka
Пользователь
 
Аватар для vasiatka
 
Регистрация: 18.02.2014
Сообщений: 90
По умолчанию

А зачем вы открываете весь файл?
Читайте файл в цикле блоками с кажем по 100 строк, или элементов... не знаю как у вас файл организован.
Далее формируете запрос и вставляете эти 100 строк в базу.
Далее процесс повторяется. Число 100 взято от балды.
При этом в памяти скрипта всегда будет только 100 строк, а не весь файл
В бинарной системе счет ведут не по пальцам, а по кулакам.
Пенза - мой город - я из Пензы.
vasiatka вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ошибка при установки размера динамического массива Lokos Общие вопросы Delphi 2 15.12.2013 09:05
одномерный массив размера n. Найти максимальный элемент массива среди элементов массива,после первого отрицательного (Паскаль) Элиза12345 Паскаль, Turbo Pascal, PascalABC.NET 7 13.11.2012 16:03
C++ - изменение размера массива kefir Помощь студентам 1 19.06.2010 11:42
определение размера массива maksim_serg Microsoft Office Excel 1 29.03.2010 07:00
Изменение размера динамического массива налету Zeraim Общие вопросы Delphi 12 26.07.2009 14:23