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

Форум PHP

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

 

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

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

тема: Сравнение больших файлов
 
 автор: Valleri   (11.05.2011 в 08:16)   письмо автору
 
 

Помогите с алгоритмом сравнения строк больших файлов.
Если делать по схеме
>>>> ...
>>>> while ($str1 = fgets($baza1))
>>>> {
>>>> while ($str2 = fgets($baza2))
>>>> {
>>>> /* код проверки дублирования товара */
>>>> }
>>>>
>>>> }
Два цикла с вложенностью - все виснет.
Fatal error: Maximum execution time of 30 seconds exceeded in
Увеличение времени особо не спасает
Надо менять алгоритм. А как?

  Ответить  
 
 автор: elenaki   (11.05.2011 в 08:22)   письмо автору
 
   для: Valleri   (11.05.2011 в 08:16)
 

читать файла по кускам.

  Ответить  
 
 автор: Valleri   (11.05.2011 в 08:51)   письмо автору
 
   для: elenaki   (11.05.2011 в 08:22)
 

Использовать вложенные циклы - кусков слишком много.
Времени на обработку - несколько суток, а то и недель.

  Ответить  
 
 автор: Valick   (11.05.2011 в 09:37)   письмо автору
 
   для: Valleri   (11.05.2011 в 08:51)
 

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

ну а если нужно тупо сравнить два файла 1:1 то вложенные циклы тут не нужны
___
а вообще такие вещи (организация товара) изначально делаются при помощи базы данных
кстати и для Вашего случая ничто не мешает применить БД

  Ответить  
 
 автор: Valleri   (11.05.2011 в 10:47)   письмо автору
 
   для: Valick   (11.05.2011 в 09:37)
 

Например, сортировка, можно использовать функции или рекурсивную функцию...
А вот с батниками(*.bat) можно существенно повысить скорость, но забыл уже как.

  Ответить  
 
 автор: Valick   (11.05.2011 в 11:58)   письмо автору
 
   для: Valleri   (11.05.2011 в 10:47)
 

тезка, что-то я не пойму кто-кому пытается помочь :)
к сортировке вообще без БД подходить не стоит
так о чем речь?
приведите фрагмент файлов (несколько строк)
и четко сформулируйте поставленную задачу (что с чем нужно сравнить и что получить в конечном итоге)
____
я конечно в батниках не силен, но кроме сравнения файла средствами ОС 1:1 и получения результата "да" "нет" ничего представить не могу

  Ответить  
 
 автор: Valleri   (11.05.2011 в 13:46)   письмо автору
 
   для: Valick   (11.05.2011 в 11:58)
 

Я в поиске. И сейчас лазил в инете интересные вещи нашел.
например :
set_time_limit(0);
php.ini memori_limit =-1;


В результате можно уйти от чтения файла по кускам(elenaki), но стоит ли.
Лучше все таки "стойкий" алгоритм прописать. Мне думается рекурсия тут лучше?
Иногда случайный совет, доброе слово, здорово помогает.

  Ответить  
 
 автор: Саня   (11.05.2011 в 14:47)   письмо автору
 
   для: Valleri   (11.05.2011 в 08:16)
 

Вы хотите уложиться в 30 секунд?
Какую цель вы преследуете, какие у вас исходные данные и что вы хотите получить в итоге?

  Ответить  
 
 автор: Valleri   (11.05.2011 в 15:26)   письмо автору
 
   для: Саня   (11.05.2011 в 14:47)
 

Мне не уложится даже в 30 минут.
Надо добавлять в базу новые данные.
В базе 300 000. Предварительно необходимо проверять дублирование, создавать формат.
Если файл XML, из которого льем, имеет размер 500 000 к, то времени на всю кухню требуется сутки.

  Ответить  
 
 автор: Саня   (12.05.2011 в 17:31)   письмо автору
 
   для: Valleri   (11.05.2011 в 15:26)
 

А есть возможность предварительно преобразовать этот XML в более подходящий формат перед его импортом на сервер?

  Ответить  
 
 автор: Valleri   (13.05.2011 в 12:04)   письмо автору
 
   для: Саня   (12.05.2011 в 17:31)
 

Все есть, делаем локально

  Ответить  
 
 автор: Саня   (13.05.2011 в 13:36)   письмо автору
 
   для: Valleri   (13.05.2011 в 12:04)
 

Прекрасно. Расскажите какой у вас формат данных в XML, схема базы и я подскажу как можно ускорить импорт.

  Ответить  
 
 автор: Valleri   (15.05.2011 в 13:40)   письмо автору
 
   для: Саня   (13.05.2011 в 13:36)
 

YML, Яндекс формат

  Ответить  
 
 автор: Саня   (18.05.2011 в 15:22)   письмо автору
 
   для: Valleri   (15.05.2011 в 13:40)
 

К сожалению, я не обладаю экстрасенсорными способностями и не смогу угадать что за данные у вас там в YML и базе.

  Ответить  
Rambler's Top100
вверх

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