За последние 24 часа нас посетили 17756 программистов и 1676 роботов. Сейчас ищут 872 программиста ...

Загрузка больших csv/xml файлов

Тема в разделе "Прочие вопросы по PHP", создана пользователем Gaga, 20 фев 2015.

  1. Gaga

    Gaga Новичок

    С нами с:
    20 фев 2015
    Сообщения:
    21
    Симпатии:
    0
    Да, я php занимаюсь 5 лет, но нигде не работал и проектов серьезных не делал, поэтому на подобные вещи мне никто не может указать)
     
  2. Dmitriy A. Arteshuk

    Dmitriy A. Arteshuk Активный пользователь

    С нами с:
    19 янв 2012
    Сообщения:
    2.445
    Симпатии:
    66
    Адрес:
    Зеленоград
    Ну...вот указываю, при большом объеме данных это шняга будет тупить, не то что бы критично, но когда речь идет о скорости, она будет ощутима. А если mb_substr то ваще жопа )

    вобщем лишнее оно там, в цикле проверяй нужна ли там запятая или нет
     
  3. Gaga

    Gaga Новичок

    С нами с:
    20 фев 2015
    Сообщения:
    21
    Симпатии:
    0
    Понял, спасибо.

    Почитал только что, да, походу тема нормальная. То есть ты предлагаешь сначала обработать весь прайс, сохранить его в обработанном виде, а потом с помощью этого оператора загрузить целиком?
     
  4. Dmitriy A. Arteshuk

    Dmitriy A. Arteshuk Активный пользователь

    С нами с:
    19 янв 2012
    Сообщения:
    2.445
    Симпатии:
    66
    Адрес:
    Зеленоград
    Не, СНАЧАЛА ты махом обрабатываешь ВЕСЬ файл и загоняешь его в БД, а потом уже тянешь из бд и делаешь что тебе нужно.
     
  5. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.250
    Адрес:
    там-сям
    Код (PHP):
    1. $whole = implode(',', $parts); // быстро и безошибочно  
     
  6. Gaga

    Gaga Новичок

    С нами с:
    20 фев 2015
    Сообщения:
    21
    Симпатии:
    0
    А от загрузки xml-файлов наверное вообще лучше избавиться, потому что пользователям без разницы во что их excel прайс сохранить - csv или xml, а загрузка xml куда геморнее в плане нагрузки

    Добавлено спустя 1 минуту 19 секунд:
    Ок, понял, вечером попробую.
     
  7. Dmitriy A. Arteshuk

    Dmitriy A. Arteshuk Активный пользователь

    С нами с:
    19 янв 2012
    Сообщения:
    2.445
    Симпатии:
    66
    Адрес:
    Зеленоград
    насколько я понял, у тебя обычный шаред хостинг ((( не получится на нем попробовать (
     
  8. Gaga

    Gaga Новичок

    С нами с:
    20 фев 2015
    Сообщения:
    21
    Симпатии:
    0
    я на локалхосте попробую, а на след. неделе планировал снять сервер и начать работать
     
  9. Gaga

    Gaga Новичок

    С нами с:
    20 фев 2015
    Сообщения:
    21
    Симпатии:
    0
    В общем у меня стояла проверка: каждая позиция проверялась в базе на наличие, и если она там была, то повторно не загружалась, то есть если у клиента в прайс-листе повторный артикул, то он не записывался. А сейчас я решил, что это не нужно, так как, во-первых, эти позиции - автозапчасти, у которых могут быть одинаковые артикулы, но разные бренды, а во-вторых, у клиента может быть 2 запчасти - одна б/у, вторая новая, а артикулы одинаковые. А в этом и была загвоздка скорости. Просто на ПК у меня 4 Гб оперативки, проверяет на повтор нормально (во всяком случае до 100 тыс. позиций), а на этом хостинге видимо мне меньше выделяется, а база-то растет с каждой итерацией, соответственно, время на поиск начинает расти, если оперативки не хватает. Убрал эту проверку, прайс 75 тыс. позиций загрузился за 2 минуты, а на 500 тыс. за 18 минут. А полгода назад, я вспомнил, когда тестировал этот обработчик на другом хостинге, эту проверку я тоже не делал. Возможно на выделенном сервере работало бы нормально, но, опять-таки, если 100 человек будут грузить одновременно, то все равно начнет тормозить. Да и не нужна эта проверка.
     
  10. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Я за весь и за имплод.
     
  11. Dmitriy A. Arteshuk

    Dmitriy A. Arteshuk Активный пользователь

    С нами с:
    19 янв 2012
    Сообщения:
    2.445
    Симпатии:
    66
    Адрес:
    Зеленоград
    Ни на одном хостинге 4 гига опнративы не выделяется. Максимум что я видел 512 метров.

    Твоя задача решается постановкой в "очередь". Есть еще вариант второго сервера, который выполняет поставленые в очередь задачи, первый только отдает контент юзерам

    Добавлено спустя 4 минуты 55 секунд:
    Тупняк при проверке у тебя из за проверки по одному. Бери по 1000-10000 сразу и проверяй.

    Артикул в индекс, все будет шустро