我们正在构建一个ajax应用程序,其中提交用户输入以处理到php脚本。我们目前正在将每个请求写入日志文件以进行跟踪。我想将此跟踪移动到数据库表中,但我不想在请求后运行insert语句。我想要做的是设置需要在MySQL数据库上处理的事务(插入和更新)的“队列”。然后,我将设置一个cron作业或进程来检查和处理队列中的事务。是否有我们可以构建的东西,或者我们必须只写入简单的文本日志文件并处理它们?
答案 0 :(得分:2)
你想要Gearman - 它会对请求进行排队并在数据库为它们做好准备时插入它们,这样就不会使数据库服务器过载。
Gearman提供了一个通用的应用程序 将工作分配给其他人的框架 机器或过程更好 适合做这项工作。它允许你 要并行工作,加载 平衡处理,并打电话 语言之间的功能。有可能 用于各种应用, 从高可用性网站到 数据库复制的传输 事件。换句话说,就是这样 神经系统如何分配 处理沟通。几个强者 有关Gearman的观点:
有一篇关于使用数据库进行日志记录的最新(和质量)帖子here,其中(摘要)说:
HighScalability write up on Gearman。
如果您真的想避免这种情况,可以将原始SQL语句写入文件并使用此cronjob处理它们:
mysql loggingDB logTable < fullLog.sql && > fullLog.sql
答案 1 :(得分:0)
MySQL可以为您完成一些工作:
INSERT DELAYED
http://dev.mysql.com/doc/refman/5.1/en/insert-delayed.html
“INSERT语句的DELAYED选项是标准SQL的MySQL扩展,如果您的客户端无法或不需要等待INSERT完成,则非常有用。这是使用MySQL进行日志记录时的常见情况。 ..“
不幸的是,“DELAYED”变体仅在INSERT上可用,而不是在UPDATE上。
答案 2 :(得分:0)
我猜Zend_Queue上课是你的遗失 这里也是an example。