zoukankan      html  css  js  c++  java
  • php的文件锁,防止对服务器的瞬间爆发访问

    思路

    1:在当前目录先建立好一个目录 比如名为time.lock

    2:设置文件锁时间, limit 比如为1s

    3:每次访问服务器时,先判断time.lock是否存在,用file_exists,

    这里就有两条线

    (1)是第一次访问,那么对于第一次访问,time.lock文件早已经创建

    用当前时间-文件的最后修改时间 (这个时间很大) 必然大于limt,则允许访问

    但此时touch下timelock这个文件,也就是修改timelock的mtime为当前时间了

    (2)这个瞬间,恰好来了第二个访问者

    同样要经过判断,当前时间-文件最后修改时间 ,由于这个文件刚刚被修改,那么这个值很小

    如果小于自己设置的limit 比如1,那么就不允许访问了,只要此用户刷新后,获得一个较大的(当前时间-文件最后修改时间)值

    才能继续访问

    代码如下

     1 $limit //锁的时间
     2 $timelock='time.lock';//锁文件,一个已经预先创建好的文件即可
     3 
     4 //下面开始访问
     5 if(file_exists($timelock)){//需要用到锁,就判断锁文件是否存在
     6     //当前时间 -- 锁文件的mtime 小于 limit
     7     if(time()-filemtime($timelock))<$limit){
     8         echo "服务器忙,请稍后访问"
     9         exit();
    10     }
    11 }
    12 @touch($timelock,time());//touch函数的作用就是修改当前文件的mtime
  • 相关阅读:
    mysql InnoDB 索引小记
    Linux shell 脚本小记
    Java中Integer的源码学习
    nginx小记
    位运算小结
    Redis小结
    CSS中nth-child和nth-of-type的简单使用
    Linux awk小记
    mysql小记--基础知识
    让44.1版本的sketch打开更高版本的sketch文件
  • 原文地址:https://www.cnblogs.com/dk1988/p/3511320.html
Copyright © 2011-2022 走看看