Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: чтение большого файла с помощью php на windows с последующей записью в MySQL
 
 автор: kaoz   (01.06.2006 в 18:49)   письмо автору
 
 

как сделать чтобы большие файлы быстро читались построчно и заносились в мускул?

100 мб скрипт из предыдущего поста выполняет за 5,669.572 sec :)

почти полтора часа...

может как бинарный его открывать?? (с ключем "rb")

   
 
 автор: Trianon   (01.06.2006 в 19:05)   письмо автору
 
   для: kaoz   (01.06.2006 в 18:49)
 

Фрагмент большого файла и структуру таблицы в студию.

   
 
 автор: kaoz   (02.06.2006 в 08:16)   письмо автору
 
   для: Trianon   (01.06.2006 в 19:05)
 

в аттаче полностью скрипт... с sql файлом и примером лога

что самое интересное php.exe в процессах всего 1 мег ест пока выполняет скрипт

   
 
 автор: kaoz   (02.06.2006 в 09:11)   письмо автору
 
   для: kaoz   (02.06.2006 в 08:16)
 

забыл еще сказать, что нужно кое-какие поля обрезать перед записью в БД и ставить в некоторых полях экранирующие кавычки

   
 
 автор: Trianon   (02.06.2006 в 10:05)   письмо автору
 
   для: kaoz   (02.06.2006 в 09:11)
 

Глядите, в тот пример. ТАм показано, как именно за один запрос к MySQL, можно вставить в базу много записей. Сейчас у Вас основные потери времени на том, что записи в базу вставляются по одной.

   
 
 автор: kaoz   (02.06.2006 в 10:20)   письмо автору
 
   для: Trianon   (02.06.2006 в 10:05)
 

читал и нифига не понял почему сразу закидываются все строки блока...

немогли бы вы прокомментировать этот кусок кода?

там только перемещена функция записи в БД за foreach... в этом веся хитрость?? немогу понять почему?

   
 
 автор: .link   (02.06.2006 в 10:26)   письмо автору
 
   для: kaoz   (02.06.2006 в 10:20)
 

А если поднять приоритет Apache, php и mysql в системе?

   
 
 автор: kaoz   (02.06.2006 в 10:30)   письмо автору
 
   для: .link   (02.06.2006 в 10:26)
 

я думаю это не поможет

   
 
 автор: kaoz   (02.06.2006 в 10:26)   письмо автору
 
   для: kaoz   (02.06.2006 в 10:20)
 

кажеться понял в чем хитрость

там получается такой запрос

INSERT INTO table VALUES (...), (...), (...), (...), ..., (...)

в этом хитрость?

   
 
 автор: Trianon   (02.06.2006 в 10:47)   письмо автору
 
   для: kaoz   (02.06.2006 в 10:26)
 

теперь реализуйте.
Только учтите, что слишком большие запросы тоже ни к чему хорошему не приводят.
Не стоит начинать с блока размером в мегабайт.

   
 
 автор: kaoz   (02.06.2006 в 12:02)   письмо автору
 
   для: Trianon   (02.06.2006 в 10:47)
 

почему мег? много?

сколько изучаю AMP все время всякие новые замуты узнаю... то не дочитал где-то что-то, то про это нигде не написано... форум спасает тока :)

   
 
 автор: cheops   (02.06.2006 в 12:17)   письмо автору
 
   для: kaoz   (02.06.2006 в 12:02)
 

Просто в MySQL часто стоит ограничение на размер запроса (параметр max_allowed_packet), который по умолчанию принимает значение не то 1, не то 2 Мб. Если вам потребуется увеличить размер запроса - следует добавить в конфигурационный файл my.ini строки
max_allowed_packet = 16М

Кроме того, PHP-скрипт тоже ограничен в памяти, при помощи директивы memory_limit конфигурационного файла php.ini
memory_limit = 8M

   
 
 автор: Trianon   (02.06.2006 в 12:46)   письмо автору
 
   для: cheops   (02.06.2006 в 12:17)
 

Коме того, ускорение процесса вовсе не пропорционально росту размера блока.
и если сперва мы увеличим блок в 200 раз (чтоб в нем помещалось 200 строк) и увидим увеличение быстродействия, допустим, в 100 раз, а потом увеличим еще в 200 раз ( и в него залезет 40 000 строк), то роста скорости в 10 000 раз против исходной мы не увидим.
А если при этом процессы перестанут лезть в общую физическую память, и начнется своппинг, то мы увидим, наоборот, сплошные тормоза.

to kaoz: об этом тоже писалось в исходной теме.

   
 
 автор: kaoz   (02.06.2006 в 12:57)   письмо автору
 
   для: Trianon   (02.06.2006 в 12:46)
 

прошу прощения за повторы... спасибо огромное, мне это очень сильно помогло...

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования