像 PHP 这种不常驻内存的语言写日志的时候不会有并发等待文件锁的问题吗?

2020-05-21 19:36:00 +08:00
 noble4cc

像常驻内存的比如 java 可以开个线程单独写日志,写日志的线程可能只有一两个,数量少不存在并发等待文件锁的问题

但是 php 不常驻内存必须实时写日志或者一个 request 至少写一次日志,当并发量比较大的时候,大量需要写日志的 request 都在抢占日志文件的文件锁不会有性能问题吗?大部分时间都阻塞了

2321 次点击
所在节点    PHP
5 条回复
wangbenjun5
2020-05-21 20:21:29 +08:00
那得看多大了,一般大型系统日志都是异步的,用队列去解决,不会直接写文件的
noble4cc
2020-05-21 21:19:26 +08:00
@wangbenjun5 php 那些框架都是直接写的
Mitt
2020-05-23 08:22:55 +08:00
@noble4cc 你可以自己调 框架有好几种写日志的方案给你的,直接写文件的方案基本都是默认先写 buffer 到一定时间或者请求结束才 flush 一次的
noble4cc
2020-05-23 11:36:14 +08:00
@Mitt 对,这些都看了,我的意思是 PHP 写日志就算优化的写也只能等到一个 request 完后一次性写入,而不能做到像其他技术栈比如 go java 那样等到积累到了一定的大小再 flush,换句话说,qps 大了 PHP 写日志的次数远大于其他技术栈
zgdlbill
2020-05-30 19:19:27 +08:00
php 也是有常驻内存技术,像最早的 workerman,和近期比较火的 swoole 都是这样的框架,提供下其他参考思路。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/674132

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX