PHP多实例单个日志文件

NEW*_*WEB 4 php concurrency instance

我是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文件.如果多个实例正在写它,这会引起关注吗?如果是这样,怎么能正确处理?

抱歉新问题......

Amb*_*ber 7

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

例如,如果实例的写入线a,b,c按照这个顺序,和实例B进行读写线1,2以及3,你可能会得到以下结果:

1
a
b
2
c
3
Run Code Online (Sandbox Code Playgroud)

或任何其他交错.