gpt4 book ai didi

PHP 多实例单个日志文件

转载 作者:可可西里 更新时间:2023-10-31 22:13:16 26 4
gpt4 key购买 nike

我对 PHP 有点陌生,所以我想知道您能否向我解释一下。

我正在尝试编写一个将附加到日志文件的类。我已经编写了类,以便资源本身在 Logger 类中是静态的。这在我测试时非常有用,因为我可以让多个类实例化一个 Logger 对象,但所有类都将共享相同的静态资源以写入文件。

也就是说,我现在面临 PHP 的多个实例(多个用户加载我的页面)的问题,更具体地说:并发性。

问题:

  1. 当我的站点遇到使用记录器的并发 php 实例时,它们是否会争夺对该文件的访问权限?

  2. 我使用的是 UBUNTU,但这对 Windows 有影响吗?

  3. 在我的记录器文件中,我每添加 X 行检查一次,以查看文件的大小,如果大小大于 Y,我将关闭该文件并“旋转”文件 (mylog.log)。 log2 变为 mylog.log3,mylog.log1 变为 mylog.log2,mylog.log 变为 mylog.log1) 并创建一个全新的 mylog.log 文件。如果多个实例正在写入它,这会引起关注吗?如果是这样,如何妥善处理?

抱歉新问题...

最佳答案

只要您的记录器以追加 模式(例如fopen("my.log", "a") 或类似方式)打开文件,每个人都应该能够在不丢失数据的情况下写入文件(操作系统将负责确保添加所有内容而不覆盖)。但是,写入文件的顺序不能跨实例保证 - 例如您可能会得到散布的日志条目。

例如,如果实例 A 按顺序写入 abc 行,实例 B 写入行 1 23,你可能会得到如下结果:

1
a
b
2
c
3

或任何其他交错。

关于PHP 多实例单个日志文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13557450/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com