【发布时间】:2016-12-07 00:21:53
【问题描述】:
使用 PHP 的网站具有非常巨大的流量,例如每秒 5000 次请求。这些请求中的每一个都尝试将数据记录到单个文件中。由于在任何时间点,只有一个请求可以写入文件,因此另一个请求排队,这会影响整体响应时间。需要记录数据,这很重要。我该如何优化这种情况。
【问题讨论】:
-
能否改为登录数据库,然后有一个函数将数据表处理成日志文件?
-
您可以为每个用户(或日志条目)创建一个临时文本文件,并以特定的时间间隔合并文件。或者编写一个文件管理器/包装器来创建一个文件,添加日志条目并在后台将其排队等待主文件条目。
-
@Cricket 为每个请求将日志写入数据库并不是一个好主意。不能谈论没有基准测试的性能。
-
@Nitin 听起来不错。增加了一些额外的工作,但会起作用。
-
使用
fluentd并将其记录在那里,然后您可以让fluentd将其写入文件,MySQL,Mongo,任何地方。它正是为此目的而开发的工具。将排队和多路复用留给专为其设计的软件。
标签: php asynchronous architecture scalability