Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > PHP: Общие вопросы > Обработать много данных |
Автор: Zorak 26.4.2013, 15:53 |
Доброго времени суток. В принципе может мои опасения напрасны, то отпишите пжлста). И так... Хочу написать скрипт, который будет обрабатывать данные и результат писать в базу. Вот шаги работы скрипта: 1. Открываем файл и считываем его в массив mas1 2. Считываем SELECT-ом данные из базы и опять загоняем в массив mas2 3. Далее бежим от начала до конца mas1. Проверяем наличие записи mas1[i] в mas2 (т.е. in_array()); 4. Далее 4.1. Если in_array == true -> делаем запись в лог-файл 4.2. Если in_array == false -> пишем ету строку в базу Мои опасения: Количество строк в mas1 неизвестно, но их будет минимум как 500... но не думаю что будет больше чем 40 000. Вопрос: справится ли PHP с такой задачей ? Какие может настройки в php.ini надо изменить чтобы ему было проще? З.Ы. Файл у меня создается при выполнении скомпиленной программы на delphi. По условиям клиента ета программа у них работает почти по 20 часов в сутки. По сути она мониторит большой набор сайтов и выбирает оттуда определенные данные и после фильтрации нужные записывает в файл, который пересоздается раз в сутки. Поэтому я не могу даже предположить сколько там будет записей. Спасибо |
Автор: ksnk 26.4.2013, 16:30 |
Не проще ли записать во временную таблицу все значения из mas1 и состряпать пару запросов - что выводить в лог и второй - что сохранять в базу. Вставка - простая простыня из insert values... Если удастся ее уместить в 64к, то это один запрос (при обычных настройках mysql) Остальное - еще пара запросов. |
Автор: Zorak 26.4.2013, 17:40 |
хм.. т.е. длругими словами разбить выполнение на части ? |
Автор: ksnk 26.4.2013, 18:07 |
Ну, в принципе, да. Дать возможность mysql выполнить всю работу и только вывести результат. |
Автор: Zorak 26.4.2013, 18:22 |
блин, как я боялся этого ответа ))))))) Добавлено через 15 секунд Спасибо большое.. ушол делать) |
Автор: skyboy 26.4.2013, 23:50 |
1. временная таблица с движком memory. 2. запись в базу отсутствующих записей — один запрос insert … select … on duplicate key ignore или аналог 3. В лог закидываются все записи из таблицы с перезаписью тех, что были. |
Автор: Zorak 29.4.2013, 23:02 |
Воспользовался принципом SkyBoy и ksnk.... спасибо вам большое, вопрос решен. |