Суть в чем, есть у меня клиент сайт на 500 000 позиций, полукровка если можно так сказать, часть сайта вордпресс а часть самописный скрипт, человек который писал это или не хочет копаться или уже сам не понимает, не суть. В общем как все работает, вернее уже не работает. Крон запускает скрипт PHP тот качает файл XML и начинает перелопачивать базу. Естественно имея такое количество данных все летит к ебеням и ничего не работает или работает но плохо. Если кто-то решал подобные задачи и читал что-то про то как снизить нагрузку на сервер, скормить ему все это порциями, разбивать на потоки и так далее, делитесь. ПЫ СЫ: За меня решать не нужно, важно научиться самому. Гуглить буду 100% в любом случае, туда также не отправляйте))) Спасибо.
500 тыс для бд не так много - при условии что структура БД адекватно построена и оптимизирована работа с большими XML да... там требования другие совсем и XML не самый компактный из типов файлов и большинство "ленивых" библиотек - типа стандартных SimpleXML, итд - грузят весь файл в память и строят DOM дерево чтоб потом работать.... недавно читал на хабре про другую библу ... которая работает без построения DOM в памяти за счет чего значительно выигрывает в скорости и требованиях к ОЗУ Еще я думаю корень проблем растет из WP где каталоги и магазины и вообще работа с БД ой как неоптимальна... да и цели у WP изначальной нет такой - он ж для блогов и простых сайтов.... Если у вас серьезный проект с 500 тыс позиций и другими плюшками - давно пора что то написать под это свое - оптимальное, быстрое, заточенное под ваши нужны... ибо насколько помню даже стандартны Битрикс от 50 тыс начинает тормозить без танцев с бубном А вообще, прежде чем советовать что-то нужна полная картина - какого объема xml, это один файл или несколько, файл на вашем сервере или внешнем, какова структура БД итд итп
@ADSoft Там все сделано так, есть база вордпресса в нее пишет как бы посты и категории, также в той же базе есть таблицы магазина, там записаны цены, на товары, производители и прочие тех данные. При выводе вордпресс показывает пост, а скрипт магазина допиливает туда же остальное, цены, кнопку купить и так далее. Как вы понимаете ни о какой оптимизации речь не идет. XML большие размер сейчас не скажу но большие. @nospiou спасибо, буду читать.
1. XML читай потоком, https://php.ru/manual/book.xmlreader.html и множество реализаций на гитхабе. Такой штукой можно разобрать любой xml, с минимальной нагрузкой на сервак. 2. БД - зависит от движка, но в целом, стремиться нужно к уменьшению количество обновляемых данных: прайс хоть и свежий, но не думаю что в нем обновляются все без исключения позиции. Имеет смысл сделать предварительную выборку-сравнение и обновлять полученный diff. Возможно, стоит покопаться в настройках на тему write buffer, что бы сгладить этот процесс. Вопросы: 1. Как часто приходят обновления товарной базы? Один раз кучей или много мелочи в течении дня? 2. Какая БД? 3. Есть возможность крутить настройки или это обычный хостинг?
@romach 1. Обновление проходит каждый день, но кроме этого там еще куча задач в кроне, думаю что он иногда запускает следующее задание поверх предыдущего, около 10 задач было когда я смотрел (пару месяцев назад). По словам манагера они там еще шаманили, и могли добавить новые. (Проверил 16 заданий). 2. MySQL если я правильно выражаюсь. 3. Есть, VESTA на ней еще 9 проектов висит.
1. вам же сказали нужно смотреть что за скрипт как и что он обновляет.... все или частично 2. выражаетесь правильно 3. скорее всего обычный хостинг, ибо если есть свой сервак редко ставят панели - все из командной строки делают )