如何优化多个进程尝试写入同一个日志文件的过程

时间:2016-08-01 19:49:51

标签: php asynchronous architecture scalability

使用PHP的网站拥有非常大的流量,例如每秒5000个请求。这些请求中的每一个都尝试将数据记录到单个文件中。由于在任何时间点只有一个请求可以写入文件,因此另一个请求排队,这会影响总体响应时间。需要记录数据,这很重要。如何优化此方案。

1 个答案:

答案 0 :(得分:0)

我看到两个选项。

  1. 由于您的要求是写入一个大型日志文件而不是其他地方。您可以使用PHP脚本将这些条目首先记录到队列中。您可以使用许多消息排队平台,如RabbitMQ或ActiveMQ。假设这些日志条目不是大型有效负载,您的用户请求导致可以指示将日志条目插入队列中。你将有另一个后端进程(可能是一个php脚本?),它只是监听队列并不断写入日志文件。以下是客户端如何使用队列消息的详细说明(https://www.rabbitmq.com/tutorials/tutorial-one-php.html

  2. 您还可以使用Apache Log4php之类的东西,它是一个使用文件附加机制的日志框架。只需调用方法,您就可以轻松地将重要信息推送给您。

    $ logger-> info(“这是要记录的消息。”);

  3. 他们应该处理多个请求登录到同一文件的复杂性。你甚至可以让他们在白天分解文件等。

    希望这有帮助!