文件中的网络计数器?
如何在没有数据库的情况下在 php 脚本中存储计数器?一直使用数据库,但现在我想要更简单的配置...由于文件锁,使用文件似乎有问题。假设有很多并发连接,我想计算脚本执行的数量。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
如何在没有数据库的情况下在 php 脚本中存储计数器?一直使用数据库,但现在我想要更简单的配置...由于文件锁,使用文件似乎有问题。假设有很多并发连接,我想计算脚本执行的数量。
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(4)
您不想使用数据库,也不想使用文件。我认为如果不使用其中任何一个就不可能实现这一目标。
You don't want to use a database and you don't want to use a file. I don't think it's possible to achieve that without using either of those.
您可以使用 memcache 之类的东西来增加内存中的缓存值。这可能是解决并发问题最快的方法。
Memcache 或 APC
当然,如果清除或重新启动内存缓存,您将丢失数据...文件持久性在某些时候是唯一的办法。
You can increment a cached value in memory using something like memcache. It's probably the fastest solution to the concurrency problem.
Memcache or APC
Ofcourse you'll lose the data if memcache is cleared or restarted... file-persistence at some point is the only way.
设置一个可以写入的目录。对于每个请求,创建一个具有随机名称的新文件。
您可以通过计算文件数来计算脚本执行的次数。
如果您以低碰撞率进行随机操作,则不会丢失计数,或者只会丢失非常非常少的计数。如果您知道文件名的随机源和哈希函数的特征,您甚至可以统计出需要添加多少个计数。
Setup a directory you can write to. For each request create a new file with a random name.
You count the number of script executions by counting the number of files.
If you do the random with a low collision rate, you won't loose a count, or only very, very few. If you know the characteristics of the random source and hash function for the file-name, you can even statistically say how many counts you need to add.