MySQL Вставка очереди сообщений

Мы создаем приложение ajax, в которое пользовательский ввод отправляется для обработки в php-скрипт. В настоящее время мы записываем каждый запрос в файл журнала для отслеживания. Я хотел бы переместить это отслеживание в таблицу базы данных, но я не хочу запускать инструкцию insert после запроса. То, что я хотел бы сделать, – создать «очередь» транзакций (вставки и обновления), которые необходимо обработать в базе данных MySQL. Затем я установил задание или процесс cron для проверки и обработки транзакций в очереди. Есть ли что-то там, на что мы можем опираться, или нам нужно просто писать в текстовые лог-файлы и обрабатывать их?

Вы хотите Gearman – он будет ставить в очередь запросы и вставлять их как и когда база данных будет готова к ним, поэтому вы не будете перегружать свой сервер БД.

Gearman предоставляет общую инфраструктуру приложений для работы с другими машинами или процессами, которые лучше подходят для работы. Он позволяет выполнять параллельную работу, обрабатывать баланс нагрузки и вызывать функции между языками. Он может использоваться в различных приложениях, с веб-сайтов высокой доступности и для транспорта событий репликации базы данных. Другими словами, именно нервная система связана с передачей распределенной обработки. Несколько сильных сторон в Gearman:

Недавняя (и качественная) публикация об использовании баз данных для регистрации здесь , в которой (в обобщенном виде) говорится:

  • Использовать MyISAM с параллельными вставками
  • Ежедневно поворачивайте таблицы и используйте UNION для запроса
  • Используйте задержанные вставки с MySQL или агентом обработки заданий, таким как Gearman (хотя MySQL имеет ограничение на количество из них, он будет стоять в очереди, прежде чем тихо их отбросить!)

HighScalability записывается на Gearman .

Если вы действительно хотите этого избежать, вы можете записать сырые инструкции SQL в файл и обработать их с помощью cronjob:

mysql loggingDB logTable < fullLog.sql && > fullLog.sql 

MySQL может выполнить определенную работу для вас:

ВСТАВИТЬ ЗАДЕРЖАН

http://dev.mysql.com/doc/refman/5.1/en/insert-delayed.html

«Параметр DELAYED для оператора INSERT является расширением MySQL для стандартного SQL, что очень полезно, если у вас есть клиенты, которым не нужно или не нужно ждать завершения INSERT. Это обычная ситуация, когда вы используете MySQL для ведения журнала …»

К сожалению, вариант «ЗАДЕРЖКА» доступен только в INSERT, а не в UPDATE.

Я предполагаю, что класс Zend_Queue – ваш потерянный здесь пример. http://www.zfsnippets.com/snippets/view/id/60