У меня работает механизм сравнения цен, и, поскольку мы собираем так много данных, у меня возникают довольно серьезные проблемы с производительностью. Мы генерируем различные XML-файлы, по одному для каждого продукта, и в данных о продукте каждый Интернет-магазин, из которого мы получаем данные, с указанием цены, ссылки, описания и т. Д.
У нас есть несколько парсеров / скребков, которые собирают информацию о ценах для каждого продукта. Данные о продукте загружаются в базу данных MySQL, затем файл PHP размещается на сервере и генерирует XML для каждого продукта.
Проблема, с которой мы сталкиваемся, заключается в том, что для 10000 продуктов генерация XML занимает почти 25 минут! БД полностью нормализована, и я создаю XML через PHP Dom.
Процесс генерации XML не учитывает, изменились ли какие-либо данные на самом деле, и это проблема, с которой я сталкиваюсь. Каков наиболее эффективный способ пропустить генерацию файлов XML, в которых нет изменений данных?
Использую ли я систему флагов? Но разве это не приводит к большему количеству просмотров базы данных, которые могут увеличить издержки базы данных? Текущие запросы занимают всего ~ 0,1 секунды для каждого продукта.
Кроме того, что произойдет, если в XML-файле изменится только 1 цена за 1 магазин, из-за этого кажется, что перезаписывать весь файл снова напрасно, но, конечно, preg_replace будет таким же трудоемким?
Спасибо за ваше время, очень признателен!