Мы создаем приложение ajax, в которое пользовательский ввод отправляется для обработки в php-скрипт. В настоящее время мы записываем каждый запрос в файл журнала для отслеживания. Я хотел бы переместить это отслеживание в таблицу базы данных, но я не хочу запускать инструкцию insert после запроса. То, что я хотел бы сделать, – создать «очередь» транзакций (вставки и обновления), которые необходимо обработать в базе данных MySQL. Затем я установил задание или процесс cron для проверки и обработки транзакций в очереди. Есть ли что-то там, на что мы можем опираться, или нам нужно просто писать в текстовые лог-файлы и обрабатывать их?
Вы хотите Gearman – он будет ставить в очередь запросы и вставлять их как и когда база данных будет готова к ним, поэтому вы не будете перегружать свой сервер БД.
Gearman предоставляет общую инфраструктуру приложений для работы с другими машинами или процессами, которые лучше подходят для работы. Он позволяет выполнять параллельную работу, обрабатывать баланс нагрузки и вызывать функции между языками. Он может использоваться в различных приложениях, с веб-сайтов высокой доступности и для транспорта событий репликации базы данных. Другими словами, именно нервная система связана с передачей распределенной обработки. Несколько сильных сторон в Gearman:
Недавняя (и качественная) публикация об использовании баз данных для регистрации здесь , в которой (в обобщенном виде) говорится:
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