开发时经常要写日志,比如排查问题用的日志、业务需要的日志。PHPer初期写日志的方式大多是用file_put_content、error_log或fopen、flock、fwrite系列函数,但当遇到高并发场景时,因为文件锁争抢及PHP本身是非编译型语言等原因,PHP提供的写日志方式就不够高效。
借鉴PHP扩展seaslog的写日志方式,采用以下几种手段可以更高效的写日志。
1、 先将日志放到内存buffer中,当请求结束或内存buffer满之后将数据刷入文件。
2、采用句柄复用,每个请求尽量只打开一次文件,减少锁的争抢。
3、 采用非独享锁, 不采用独享锁,提高性能。
4、 先响应数据给客户端(如利用fastcgi_finish_request函数),再异步写日志。
5、采用go、C++、C等编译型语言,相对于PHP是预编译好的代码,执行效率会更高。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/4323.html