我有一个实时更新功能的脚本.我会把它移到一个cron工作,但由于一些限制,我宁愿让它生效并在页面加载时调用.
问题在于,当有大量流量时,它不能正常工作,因为它使用了一些随机和加权数字,所以如果它经常发生一次,结果就不是我们想要的了.
所以,问题是.有没有办法告诉特定脚本被访问了多少次?并且一次只能限制一次?
谢谢!
您正在寻找的技术称为锁定.
最简单的方法是创建一个临时文件,并在操作完成后将其删除.其他进程将查找该临时文件,看它已经存在并消失.
但是,您还需要注意锁的所有者进程崩溃的可能性,并且无法删除锁.这就是这个简单的任务似乎变得复杂的地方.
文件锁定解决方案
PHP具有内置flock()函数,承诺独立于操作系统的基于文件的锁定功能.这个问题有一些关于如何使用它的实用提示.但是,手册页警告说,在某些情况下,flock()多个PHP脚本实例同时尝试获取锁定时会出现问题.这个问题似乎在这个问题上有更高级的答案,但实施起来并非都是微不足道的.
数据库锁定
这个问题的作者- 可能被周围的复杂性吓跑了flock()- 要求其他的,而不是基于文件的锁定技术,并提出了MySQL的问题GET_LOCK().我从来没有使用它,但它看起来很简单 - 如果你使用mySQL,它可能值得一试.
该死的,如果你想做的话,这个问题很复杂!有兴趣看看是否有更优雅的东西出现.