关于日志造成的频繁的IO

记录日志可能消耗大量的IO 

【Q】 

每次写入都是一个IO操作 即使是同一个文件 两次写入也要打开两次IO操作

 

【F】

   设想有这样一个扩展  把php中要记录的日志 用文件名 和 内容的方式记录在内存中 然后这一个php进程结束时候 统一把内存中存储的日志写入日志文件

 

假如 一次php运行 对a.file 写入3次 b.file 写入2次 c.file 写入一次 

  普通的写入方式 总共进行 6次IO操作

  采用设想的方法 3次IO操作 

【Q】

这种方式只会影响 多次写入统一文件的IO操作 如果日志只会对每个文件写入一次 不会减少IO操作

【F】

 但如果再假设 先把文件名 和 日志内容 都先记录到同一个文件的话 然后在空闲时候再利用程序分割(或者就直接存储在这个文件用)这样就能保证一次php运行只进行一次日志的IO操作 

   这段时间只进行了一次IO操作 可以减少大量IO操作

如果后期想再分割这个文件的话 可以在服务器空闲时期分割  至少能均衡服务器的负担

 

PHP扩展wlog  github地址  https://github.com/china8036/wlog

 

posted @ 2015-07-24 16:56  china8036  阅读(1145)  评论(0编辑  收藏  举报