我们正在构建一个ajax应用程序,在这个应用程序中,用户的输入被提交给一个php脚本进行处理。我们目前正在将每个请求写入日志文件以进行跟踪。我想将此跟踪移动到数据库表中,但我不想在请求后运行insert语句。我想要做的是设置一个需要在MySQL数据库上处理的事务(插入和更新)的“队列”。然后,我将设置一个cron作业或进程来检查和处理队列中的事务。有没有什么是我们可以在此基础上构建的,或者我们必须只写到纯文本日志文件中并对其进行处理?
发布于 2010-04-02 01:19:56
您需要Gearman -它会将请求排队,并在数据库准备就绪时插入它们,这样您就不会使DB服务器过载。
Gearman提供了一个通用的应用程序框架,将工作外包给更适合做这项工作的其他机器或进程。它允许你并行工作,负载平衡处理,以及在不同语言之间调用函数。它可用于各种应用程序,从高可用性网站到数据库复制事件的传输。换句话说,它是分布式处理如何通信的神经系统。关于Gearman的几个优点:
最近有一篇关于使用数据库记录here的文章(质量很高),它(摘要)说:
HighScalability write up on Gearman.
如果您确实想要避免这种情况,您可以将原始SQL语句写入一个文件,并使用以下cronjob处理它们:
mysql loggingDB logTable < fullLog.sql && > fullLog.sql发布于 2010-04-02 01:23:28
MySQL可以为您做一些工作:
插入延迟
http://dev.mysql.com/doc/refman/5.1/en/insert-delayed.html
“INSERT语句的DELAYED选项是标准MySQL的扩展,如果您的客户端无法或不需要等待INSERT完成,则此选项非常有用。当您使用MySQL进行日志记录时,这是一种常见的情况...”
不幸的是,“延迟”变体仅在插入时可用,在更新时不可用。
发布于 2010-04-02 01:24:54
我猜Zend_Queue类是你在这里迷失的,这里也是an example。
https://stackoverflow.com/questions/2562233
复制相似问题