За последние 24 часа нас посетили 67370 программистов и 1641 робот. Сейчас ищут 968 программистов ...

Где почитать про: работу с большими базами данных и файлами XML

Тема в разделе "PHP для новичков", создана пользователем laszlopv, 3 окт 2018.

  1. laszlopv

    laszlopv Активный пользователь

    С нами с:
    26 фев 2017
    Сообщения:
    244
    Симпатии:
    40
    Суть в чем, есть у меня клиент сайт на 500 000 позиций, полукровка если можно так сказать, часть сайта вордпресс а часть самописный скрипт, человек который писал это или не хочет копаться или уже сам не понимает, не суть. В общем как все работает, вернее уже не работает. Крон запускает скрипт PHP тот качает файл XML и начинает перелопачивать базу. Естественно имея такое количество данных все летит к ебеням и ничего не работает или работает но плохо.

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

    ПЫ СЫ: За меня решать не нужно, важно научиться самому. Гуглить буду 100% в любом случае, туда также не отправляйте))) Спасибо.
     
  2. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.866
    Симпатии:
    753
    Адрес:
    Татарстан
    500 тыс для бд не так много - при условии что структура БД адекватно построена и оптимизирована
    работа с большими XML да... там требования другие совсем и XML не самый компактный из типов файлов
    и большинство "ленивых" библиотек - типа стандартных SimpleXML, итд - грузят весь файл в память и строят DOM дерево чтоб потом работать.... недавно читал на хабре про другую библу ... которая работает без построения DOM в памяти за счет чего значительно выигрывает в скорости и требованиях к ОЗУ
    Еще я думаю корень проблем растет из WP где каталоги и магазины и вообще работа с БД ой как неоптимальна... да и цели у WP изначальной нет такой - он ж для блогов и простых сайтов....
    Если у вас серьезный проект с 500 тыс позиций и другими плюшками - давно пора что то написать под это свое - оптимальное, быстрое, заточенное под ваши нужны... ибо насколько помню даже стандартны Битрикс от 50 тыс начинает тормозить без танцев с бубном

    А вообще, прежде чем советовать что-то нужна полная картина - какого объема xml, это один файл или несколько, файл на вашем сервере или внешнем, какова структура БД итд итп
     
    laszlopv нравится это.
  3. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
  4. laszlopv

    laszlopv Активный пользователь

    С нами с:
    26 фев 2017
    Сообщения:
    244
    Симпатии:
    40
    @ADSoft Там все сделано так, есть база вордпресса в нее пишет как бы посты и категории, также в той же базе есть таблицы магазина, там записаны цены, на товары, производители и прочие тех данные. При выводе вордпресс показывает пост, а скрипт магазина допиливает туда же остальное, цены, кнопку купить и так далее. Как вы понимаете ни о какой оптимизации речь не идет. XML большие размер сейчас не скажу но большие.

    @nospiou спасибо, буду читать.
     
  5. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.866
    Симпатии:
    753
    Адрес:
    Татарстан
    Если разговоров об оптимизации не идёт - зачем вообще тему было поднимать?
     
  6. laszlopv

    laszlopv Активный пользователь

    С нами с:
    26 фев 2017
    Сообщения:
    244
    Симпатии:
    40
    @ADSoft Я имел в виду, то, что сделано не оптимизировано, а не то, что делать не нужно.
     
  7. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    1. XML читай потоком, https://php.ru/manual/book.xmlreader.html и множество реализаций на гитхабе. Такой штукой можно разобрать любой xml, с минимальной нагрузкой на сервак.
    2. БД - зависит от движка, но в целом, стремиться нужно к уменьшению количество обновляемых данных: прайс хоть и свежий, но не думаю что в нем обновляются все без исключения позиции. Имеет смысл сделать предварительную выборку-сравнение и обновлять полученный diff. Возможно, стоит покопаться в настройках на тему write buffer, что бы сгладить этот процесс.

    Вопросы:
    1. Как часто приходят обновления товарной базы? Один раз кучей или много мелочи в течении дня?
    2. Какая БД?
    3. Есть возможность крутить настройки или это обычный хостинг?
     
  8. laszlopv

    laszlopv Активный пользователь

    С нами с:
    26 фев 2017
    Сообщения:
    244
    Симпатии:
    40
    @romach
    1. Обновление проходит каждый день, но кроме этого там еще куча задач в кроне, думаю что он иногда запускает следующее задание поверх предыдущего, около 10 задач было когда я смотрел (пару месяцев назад). По словам манагера они там еще шаманили, и могли добавить новые. (Проверил 16 заданий).
    2. MySQL если я правильно выражаюсь.
    3. Есть, VESTA на ней еще 9 проектов висит.
     

    Вложения:

    • graf.jpg
      graf.jpg
      Размер файла:
      305,4 КБ
      Просмотров:
      6
  9. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.866
    Симпатии:
    753
    Адрес:
    Татарстан
    1. вам же сказали нужно смотреть что за скрипт как и что он обновляет.... все или частично
    2. выражаетесь правильно
    3. скорее всего обычный хостинг, ибо если есть свой сервак редко ставят панели - все из командной строки делают )
     
  10. laszlopv

    laszlopv Активный пользователь

    С нами с:
    26 фев 2017
    Сообщения:
    244
    Симпатии:
    40
    Значит так и сделаю, спасибо