加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP多实例单个日志文件

发布时间:2020-12-13 17:43:12 所属栏目:PHP教程 来源:网络整理
导读:我是 PHP的新手,所以我想知道你是否可以向我解释一下. 我正在尝试编写一个将附加到日志文件的类.我编写了这个类,以便资源本身在Logger类中是静态的.这对我来说非常适合我测试,因为我可以让多个类实例化一个Logger对象但是所有人都将共享相同的静态资源来写入
我是 PHP的新手,所以我想知道你是否可以向我解释一下.

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

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

问题:

>当我的网站遇到使用记录器的并发php实例时,他们是否会争取访问此文件?
>我在UBUNTU,但这会在Windows中产生影响吗?
>在我的记录器文件中,我检查每X行添加的行数以查看文件的大小,如果大小大于Y,我关闭此文件并“旋转”文件(mylog.log2变为mylog.log3,mylog.log1变为mylog.log2,mylog.log变为mylog.log1)并创建一个全新的mylog.log文件.如果多个实例正在写它,这会引起关注吗?如果是这样,怎么能正确处理?

抱歉新问题……

解决方法

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

例如,如果实例A按顺序写入行a,b,c,而实例B写入行1,2和3,则可能会得到以下结果:

1
a
b
2
c
3

或任何其他交错.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读