MySQL插入语句队列

5 php mysql database logging transactions

我们正在构建一个ajax应用程序,其中提交用户输入以处理到php脚本.我们目前正在将每个请求写入日志文件以进行跟踪.我想将此跟踪移动到数据库表中,但我不想在请求后运行insert语句.我想要做的是设置需要在MySQL数据库上处理的事务(插入和更新)的"队列".然后,我将设置一个cron作业或进程来检查和处理队列中的事务.有没有我们可以构建的东西,或者我们必须写简单的文本日志文件并处理它们?

And*_*ndy 2

您需要Gearman - 它会将请求排队并在数据库准备好时插入它们,这样您就不会超载数据库服务器。

Gearman 提供了一个通用的应用程序框架,将工作外包给其他更适合完成该工作的机器或进程。它允许您并行工作、负载平衡处理以及在语言之间调用函数。它可用于各种应用程序,从高可用性网站到数据库复制事件的传输。换句话说,它是分布式处理如何通信的神经系统。Gearman 的一些优点:

最近有一篇关于使用数据库进行日志记录的(高质量的)帖子其中(总结)说:

  • 使用 MyISAM 进行并发插入
  • 每天轮换表并使用UNION进行查询
  • 将延迟插入与 MySQL 或像 Gearman 这样的作业处理代理一起使用(尽管 MySQL 对这些插入的数量有限制,但它会在默默地删除它们之前排队!)

HighScalability在 Gearman 上发表文章

如果您确实想避免这种情况,可以将原始 SQL 语句写入文件并使用以下 cronjob 处理它们:

mysql loggingDB logTable < fullLog.sql && > fullLog.sql
Run Code Online (Sandbox Code Playgroud)