php file_put_content ——更高效写日志

100人浏览   2024-09-19 09:03:29

开发时经常要写日志,比如排查问题用的日志、业务需要的日志。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是预编译好的代码,执行效率会更高。

相关推荐