mysql — лучший подход для событий, отправляемых сервером, с рекомендациями по производительности

Мне нужен совет по производительности …

У нас есть долго работающий PHP-скрипт (который может занять более 10 минут) с обновлениями прогресса, которые возвращаются к пользовательскому интерфейсу через отправленные сервером события. http://www.html5rocks.com/en/tutorials/eventsource/basics/

Все работает нормально, но я беспокоюсь о том, как это забьет БД.

Грубый поток — это;

1) Пользователь переходит на страницу публикации приложения.

2) Пользовательский интерфейс открывает поток EventSource для сценария php, который отслеживает
Выполняется публикация, и, если это так, сообщает о событиях прогресса — проверяет каждый
второй.

3) Если пользователь инициирует публикацию, он запускает Ajax-вызов
работает скрипт php.

4) EventSource затем сообщит о событиях для этой публикации.

Мониторинг осуществляется путем сохранения прогресса в таблице MySQL.
Длительный скрипт записывает прогресс в БД, а скрипт Event проверяет это каждую секунду.

Как я уже сказал, все это работает, за исключением того, что каждую секунду он попадает в базу данных для поиска — для каждой открытой страницы на странице публикации.

Это низкочастотное приложение (на данный момент меньше 100 — но это может увеличиться), низкочастотное приложение, поэтому вряд ли на этой странице будет больше, чем полная рука, но все же — это не займет много.

На данный момент все это размещено на AWS — микро БД.

Итак, я полагаю, мои вопросы

1) Удар по БД каждую секунду для каждой сессии публикации страницы — это
плохой? я должен беспокоиться?

2) Какие есть альтернативы попаданию в БД — вместо этого пишите в файл или память?
(плохо, если мы когда-нибудь загрузим баланс)

3) Нет способа получить уведомление о событии PHP, когда mySQL
обновления таблицы есть?

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

Я мог бы динамически изменить время обновления. Каждую секунду, когда идет публикация, опускайтесь до каждых 5 или 10, когда нет?

Переписывание в Node или использование отдельного сервера уведомлений на самом деле не вариант — я просто хочу простые события прогресса для долго работающего скрипта !!

Любой совет высоко ценится.

м

2

Решение

1) Удар по БД каждую секунду для каждой сессии публикации страницы — это плохо? я должен беспокоиться?

Вероятно, это быстро убьет вашу БД, если ваша пользовательская база будет расти.

2) Какие есть альтернативы попаданию в БД — вместо этого пишите в файл или память? (плохо, если мы когда-нибудь загрузим баланс)

Файл будет проще всего. Хотя вы могли бы потенциально использовать SQLite и вывести свою основную базу данных из уравнения для этой конкретной проблемы.

3) Нет способа получить уведомление о событии PHP, когда происходит обновление таблицы MySQL?

Конечно, окольным путем. Пусть сценарий событий прослушивает изменения в файле кэша, который записывается при каждом обновлении базы данных MySQL.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]