繁体   English   中英

PHP多实例单个日志文件

[英]PHP multiple instances single log file

我是PHP的新手,所以我想知道你是否可以向我解释一下。

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

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

问题:

  1. 当我的网站遇到使用记录器的并发php实例时,他们是否会争取访问此文件?

  2. 我在UBUNTU,但这会在Windows中产生影响吗?

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

抱歉新问题......

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

例如,如果实例的写入线abc的顺序,和实例乙写入线12 ,和3 ,则可能会得到以下结果:

1
a
b
2
c
3

或任何其他交错。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM