我有 8 个由 NGINX 和 PHP 提供支持的负载平衡 Web 服务器。这些 Web 服务器中的每一个都将数据发布到中央 MySQL 数据库服务器。他们 [web 服务器] 还将相同的数据(尽管稍微格式化)发布到单独的日志服务器(逐行)中的文本文件中,即一个数据库插入 = 日志文件中的一行。
执行日志记录的 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。