|
|
|
| Помогите с алгоритмом сравнения строк больших файлов.
Если делать по схеме
>>>> ...
>>>> while ($str1 = fgets($baza1))
>>>> {
>>>> while ($str2 = fgets($baza2))
>>>> {
>>>> /* код проверки дублирования товара */
>>>> }
>>>>
>>>> }
Два цикла с вложенностью - все виснет.
Fatal error: Maximum execution time of 30 seconds exceeded in
Увеличение времени особо не спасает
Надо менять алгоритм. А как? | |
|
|
|
|
|
|
|
для: Valleri
(11.05.2011 в 08:16)
| | читать файла по кускам. | |
|
|
|
|
|
|
|
для: elenaki
(11.05.2011 в 08:22)
| | Использовать вложенные циклы - кусков слишком много.
Времени на обработку - несколько суток, а то и недель. | |
|
|
|
|
|
|
|
для: Valleri
(11.05.2011 в 08:51)
| | я так понимаю Вам нужно сравнить строку одного файла со всеми строками другого файла
если так, то без вложенных циклов тут не обойтись, единственное для уменьшения нагрузки нужно убирать из сравнения строки для которых уже найдено соответствие.
ну а если нужно тупо сравнить два файла 1:1 то вложенные циклы тут не нужны
___
а вообще такие вещи (организация товара) изначально делаются при помощи базы данных
кстати и для Вашего случая ничто не мешает применить БД | |
|
|
|
|
|
|
|
для: Valick
(11.05.2011 в 09:37)
| | Например, сортировка, можно использовать функции или рекурсивную функцию...
А вот с батниками(*.bat) можно существенно повысить скорость, но забыл уже как. | |
|
|
|
|
|
|
|
для: Valleri
(11.05.2011 в 10:47)
| | тезка, что-то я не пойму кто-кому пытается помочь :)
к сортировке вообще без БД подходить не стоит
так о чем речь?
приведите фрагмент файлов (несколько строк)
и четко сформулируйте поставленную задачу (что с чем нужно сравнить и что получить в конечном итоге)
____
я конечно в батниках не силен, но кроме сравнения файла средствами ОС 1:1 и получения результата "да" "нет" ничего представить не могу | |
|
|
|
|
|
|
|
для: Valick
(11.05.2011 в 11:58)
| | Я в поиске. И сейчас лазил в инете интересные вещи нашел.
например :
set_time_limit(0);
php.ini memori_limit =-1;
В результате можно уйти от чтения файла по кускам(elenaki), но стоит ли.
Лучше все таки "стойкий" алгоритм прописать. Мне думается рекурсия тут лучше?
Иногда случайный совет, доброе слово, здорово помогает. | |
|
|
|
|
|
|
|
для: Valleri
(11.05.2011 в 08:16)
| | Вы хотите уложиться в 30 секунд?
Какую цель вы преследуете, какие у вас исходные данные и что вы хотите получить в итоге? | |
|
|
|
|
|
|
|
для: Саня
(11.05.2011 в 14:47)
| | Мне не уложится даже в 30 минут.
Надо добавлять в базу новые данные.
В базе 300 000. Предварительно необходимо проверять дублирование, создавать формат.
Если файл XML, из которого льем, имеет размер 500 000 к, то времени на всю кухню требуется сутки. | |
|
|
|
|
|
|
|
для: Valleri
(11.05.2011 в 15:26)
| | А есть возможность предварительно преобразовать этот XML в более подходящий формат перед его импортом на сервер? | |
|
|
|
|
|
|
|
для: Саня
(12.05.2011 в 17:31)
| | Все есть, делаем локально | |
|
|
|
|
|
|
|
для: Valleri
(13.05.2011 в 12:04)
| | Прекрасно. Расскажите какой у вас формат данных в XML, схема базы и я подскажу как можно ускорить импорт. | |
|
|
|
|
|
|
|
для: Саня
(13.05.2011 в 13:36)
| | YML, Яндекс формат | |
|
|
|
|
|
|
|
для: Valleri
(15.05.2011 в 13:40)
| | К сожалению, я не обладаю экстрасенсорными способностями и не смогу угадать что за данные у вас там в YML и базе. | |
|
|
|