加速PHP文件写入

时间:2013-06-11 22:18:38

标签: php performance logging

我有8台由NGINX和PHP驱动的负载均衡的Web服务器。这些Web服务器中的每一个都将数据发布到中央MySQL数据库服务器。他们[Web服务器]也会将相同的数据(虽然格式有点)发布到单独的Log Server中的文本文件中(逐行),即一个数据库插入=日志文件中的一行。

执行日志记录的PHP文件的活动代码如下所示:

file_put_contents(file_path_to_log_file, single_line_of_text_to_log, FILE_APPEND | LOCK_EX);

我遇到的问题是将其缩放到每秒5,000个左右的日志。该操作将需要几秒钟才能完成,并将大大减慢日志服务器的速度。

我正在寻找一种快速提升速度的方法。我查看了以下文章:Performance of Non-Blocking Writes via PHP

但是,从测试开始,作者看起来好像可以在写入之前访问所有日志数据。就我而言,每次写入都是由Web服务器随机启动的。

有没有办法可以大大加快PHP写入速度?!或者我应该只是登录到数据库表,然后以定时间隔将数据转储到文本文件中?!

仅供参考:我没有在传统的“伐木”中使用上述文字文件'感觉......文本文件是一个CSV文件,我将在稍后提供给Google BigQuery。

1 个答案:

答案 0 :(得分:1)

由于您正在将所有日志写入单个服务器,您是否考虑将日志服务实现为简单的套接字服务器?这样,您只需在服务启动时将日志文件刷新一次,并在日志条目进入时写出来。您还可以获得Web服务器客户端无需等待此操作的额外好处完成......他们可以简单地连接,发布他们的数据,然后断开连接。