V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
noble4cc
V2EX  ›  PHP

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

  •  
  •   noble4cc · 2020-05-21 19:36:00 +08:00 · 2491 次点击
    这是一个创建于 1646 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    5 条回复    2020-05-30 19:19:27 +08:00
    wangbenjun5
        1
    wangbenjun5  
       2020-05-21 20:21:29 +08:00
    那得看多大了,一般大型系统日志都是异步的,用队列去解决,不会直接写文件的
    noble4cc
        2
    noble4cc  
    OP
       2020-05-21 21:19:26 +08:00
    @wangbenjun5 php 那些框架都是直接写的
    Mitt
        3
    Mitt  
       2020-05-23 08:22:55 +08:00 via iPhone
    @noble4cc 你可以自己调 框架有好几种写日志的方案给你的,直接写文件的方案基本都是默认先写 buffer 到一定时间或者请求结束才 flush 一次的
    noble4cc
        4
    noble4cc  
    OP
       2020-05-23 11:36:14 +08:00
    @Mitt 对,这些都看了,我的意思是 PHP 写日志就算优化的写也只能等到一个 request 完后一次性写入,而不能做到像其他技术栈比如 go java 那样等到积累到了一定的大小再 flush,换句话说,qps 大了 PHP 写日志的次数远大于其他技术栈
    zgdlbill
        5
    zgdlbill  
       2020-05-30 19:19:27 +08:00
    php 也是有常驻内存技术,像最早的 workerman,和近期比较火的 swoole 都是这样的框架,提供下其他参考思路。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1165 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 18:17 · PVG 02:17 · LAX 10:17 · JFK 13:17
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.