- 主题:Re: 谁能帮我看看网页访问计数器的php代码有什么问题吗?
给文件加写锁,flock之类的
并发不大的话没啥问题
【 在 RythmOfWind (RythmOfWind) 的大作中提到: 】
: 没有数据库哦,我只是放在一个简单的网页空间上。php+文件 能实现吗?
--
FROM 115.171.245.*
首先,这个代码是错的,应该在读之前就加锁,否则并发访问时计数不对
另外,要不要while取决于你的需求和场景
并发很高的时,while会导致整个过程串行化,必然影响页面访问
不用while呢就会丢失统计
【 在 RythmOfWind (RythmOfWind) 的大作中提到: 】
: 搜到了一个现成的代码:
: /页面访问计数器
: function pageVisitCount() {
: ...................
--
FROM 124.126.1.*
没法解决。就一个文件,想不写乱只能串行写
并发高就上数据库或redis
【 在 RythmOfWind (RythmOfWind) 的大作中提到: 】
: 嗯,应该读前加锁的问题我也发现了。while串行化的问题怎么解决?另开线程吗
--
FROM 124.126.1.*
加了锁就是串行的,多线程是为了啥?
【 在 RythmOfWind (RythmOfWind) 的大作中提到: 】
: 多线程不行吗?会有什么问题
--
FROM 124.126.1.*
不行的。php每次执行是不同进程,那个变量并不会共享
【 在 RythmOfWind (RythmOfWind) 的大作中提到: 】
: 我有了一个新的想法,应该用一个变量来存储访问数,然后每隔100毫秒将这变量写入文件,这样高并发时就避免了频繁读取文件的操作。
: 修改文件的时间肯定是比修改变量的时间长很多,减少修改文件的操作次数就能极大的减少高并发时冲突的发生。
: 就是要注意一开始程序运行时要先从文件读取访问数。变量初始化时赋值-1,用于判断程序是不是刚开始运行。
: ...................
--
FROM 124.126.1.*