We're building an ajax application where a customers input is posted for processing to some php script. We're presently writing every request to some log apply for monitoring. I must move this monitoring right into a database table however i don't want to operate a place statement after request. What I must do is to establish a 'queue' of transactions (card inserts and updates) that should be processed around the MySQL database. I'd then setup a cron job or process to check on and process the transactions within the queue. Can there be something available that people could build upon or do we must just email plain old text log files and process them?

You would like Gearman - it'll queue the demands and place them whenever the database is prepared on their behalf, which means you don't overload your DB server.

Gearman supplies a generic application framework to farm out try to other machines or processes which are better suitable for perform the work. It enables you to complete operate in parallel, to load balance processing, and also to call functions between languages. It may be used in a number of programs, from high-availability internet sites to the transport of database replication occasions. Quite simply, it's the central nervous system based on how distributed processing conveys. A couple of strong points about Gearman:

There is a recent (and quality) publish about using databases for logging here, which (summarised) states:

  • Use MyISAM with concurrent card inserts
  • Rotate tables daily and employ UNION to question
  • Use postponed card inserts with MySQL or perhaps a job processing agent like Gearman (although MySQL includes a limit on the amount of these it'll queue before quietly shedding them!)

HighScalability write up on Gearman.

If you want to avert this, you can write the raw SQL claims to some file and process all of them with this cronjob:

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

MySQL can perform a few of the meet your needs:

Place Postponed

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

"The Postponed choice for the Place statement is really a MySQL extension to straightforward SQL that's very helpful for those who have clients that can't or do not need to wait for a Place to accomplish. This can be a common situation if you use MySQL for logging..."

Regrettably the "Postponed" variation is just on Place, this is not on UPDATE.

I suppose Zend_Queue class is the lost here's a good example too http://www.zfsnippets.com/snippets/view/id/60