Хорошо, поэтому я создаю сайт, на котором люди могут публиковать новости, комментарии, вопросы и т. Д. Люди также могут оценивать все эти объекты, добавлять их в избранное, делиться ими и т. Д. На сайте PHP + MySQL. Я написал скрипт на PHP, который делает следующее:
- Получите все комментарии и оценки, добавленные к ним за последние 5 минут. Добавьте запись в таблицу «популярность» с изменением популярности для каждого объекта комментария.
- Получите все новости и оценки / просмотры / избранное / акции добавлены к ним. Рассчитайте популярность для каждой новости (принимая во внимание изменение популярности комментариев, прикрепленных к ним на шаге 1) и вставьте запись в таблицу популярности с изменением популярности для каждого объекта новостей.
- Повторите шаг 2 для вопросов и других типов объектов
Я пытался запускать этот скрипт (на самом деле это задача Symfony) каждые 5 минут с помощью задания cron, и PHP начал задыхаться и поглощать все ресурсы моего сервера.
Каков предпочтительный способ запуска сценария фоновой аналитики, который вычисляет новые данные на основе данных в БД MySQL, а затем вставляет вычисленные данные в БД? Я уверен, что мне не хватает некоторых основных процедур здесь. Следует отметить, что БД находится на другом сервере, и у этого сервера не было проблем с ресурсами. Похоже, что проблема сводится к тому, что PHP блокирует сервер приложений, просматривая объекты, вычисляя популярность (простые вычисления) и вставляя в БД.
Спасибо
- Правка
Как насчет репликации БД на сервер, используемый только для расчетов. Я мог запустить скрипт популярности на сервере вычислений с реплицированной БД и вставить вычисленные записи популярности в живую БД. Конечно, это будет немного задержано, но это не так уж важно. Я не уверен, если это решит проблему потребления ресурсов PHP, хотя.