V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
noble4cc
V2EX  ›  PHP

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

  •  
  •   noble4cc · May 21, 2020 · 3099 views
    This topic created in 2169 days ago, the information mentioned may be changed or developed.

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

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

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