Php 在基于移动的社交应用程序中记录消息的最佳方式

Php 在基于移动的社交应用程序中记录消息的最佳方式,php,logging,concurrency,Php,Logging,Concurrency,我正在开发社交应用程序的后端部分。客户端是iOS/Android手机。后端代码是一个向客户端提供RESTAPI的PHP应用程序 我使用的是一个简单的日志系统,有几个日志级别和不同的日志编写器。较简单的编写器是文件编写器。所有日志消息都会转到每天都会更改的日志文件中。至少到目前为止,日志文件不会用于分析目的。只需记录错误和用户的重要操作(主要是数据库访问) 我很担心,因为如果用户群快速增长,我认为写入文件是一种瓶颈,原因有二: 磁盘写入开销 并行性 关于第二点,我有一个疑问。如果怀疑是愚蠢的,

我正在开发社交应用程序的后端部分。客户端是iOS/Android手机。后端代码是一个向客户端提供RESTAPI的PHP应用程序

我使用的是一个简单的日志系统,有几个日志级别和不同的日志编写器。较简单的编写器是文件编写器。所有日志消息都会转到每天都会更改的日志文件中。至少到目前为止,日志文件不会用于分析目的。只需记录错误和用户的重要操作(主要是数据库访问)

我很担心,因为如果用户群快速增长,我认为写入文件是一种瓶颈,原因有二:

  • 磁盘写入开销
  • 并行性
关于第二点,我有一个疑问。如果怀疑是愚蠢的,我很抱歉:我正在使用Apache和Prefork MPM。只要使用不同的进程处理不同客户机的请求,当两个进程试图将消息记录到同一文件时,就不会出现concurrecy问题。操作系统(Ubuntu11.10)处理这个问题。我说得对吗

即使在这种情况下,当我不必担心并发写入文件时,这是一个好主意吗?是不是太慢了


非常感谢,只要您在附加模式下打开文件,您就可以了。请注意,只要您想要持久性日志文件,它们就必须在某个时刻转到磁盘上的文件。使用DBMS毫无意义,因为它只是文件系统顶部的另一层。只要您没有在禁用缓存的情况下打开文件,操作系统就应该负责I/O调度和成批地写东西。

感谢您的快速响应!还有一个简单的问题:每天只使用一个日志文件有意义吗?每个客户端一个日志文件是更好的方法吗?@jorges80:创建文件比附加到现有文件要昂贵,至少对于最常用的文件系统是如此;)如果您在linux上,并且可以控制系统,那么您还应该使用syslog查看设置,因为这样可以保持文件句柄为您打开,并执行文件轮换+删除旧日志文件。而且有些人似乎使用MongoDB对具有多个Web服务器的设置使用中央日志功能