像常驻内存的比如 java 可以开个线程单独写日志,写日志的线程可能只有一两个,数量少不存在并发等待文件锁的问题
但是 php 不常驻内存必须实时写日志或者一个 request 至少写一次日志,当并发量比较大的时候,大量需要写日志的 request 都在抢占日志文件的文件锁不会有性能问题吗?大部分时间都阻塞了
1
wangbenjun5 2020-05-21 20:21:29 +08:00
那得看多大了,一般大型系统日志都是异步的,用队列去解决,不会直接写文件的
|
2
noble4cc OP @wangbenjun5 php 那些框架都是直接写的
|
3
Mitt 2020-05-23 08:22:55 +08:00 via iPhone
@noble4cc 你可以自己调 框架有好几种写日志的方案给你的,直接写文件的方案基本都是默认先写 buffer 到一定时间或者请求结束才 flush 一次的
|
4
noble4cc OP @Mitt 对,这些都看了,我的意思是 PHP 写日志就算优化的写也只能等到一个 request 完后一次性写入,而不能做到像其他技术栈比如 go java 那样等到积累到了一定的大小再 flush,换句话说,qps 大了 PHP 写日志的次数远大于其他技术栈
|
5
zgdlbill 2020-05-30 19:19:27 +08:00
php 也是有常驻内存技术,像最早的 workerman,和近期比较火的 swoole 都是这样的框架,提供下其他参考思路。
|