• 针对php脚本文件执行锁定的代码,避免脚本在同一时间重复运行


    <?php
    //针对php脚本文件执行锁定的代码,避免脚本在同一时间重复运行,http://ken.01h.net/
    define('PHP_LOCK_FILE', dirname(__FILE__) . '/php.lock');
    ini_set('display_errors', true);
    ini_set('error_reporting', E_ALL);
     
    global $php_lock_fp;
    $php_lock_fp = @fopen(PHP_LOCK_FILE, "w+") or die("Couldn't open the lock file ! ");
     
    if (flock($php_lock_fp, LOCK_EX + LOCK_NB)) {   //排它型锁定
     register_shutdown_function('php_release_lock');  //当脚本结束时执行该方法,用于解锁
     fwrite($php_lock_fp, getmypid());
    } else {
     @fclose($php_lock_fp);
     exit("Couldn't lock the file ! ");
    }
     
    function php_release_lock()
    {
     global $php_lock_fp;
     if(is_resource($php_lock_fp)){
      flock($php_lock_fp, LOCK_UN);  //释放锁定
      @fclose($php_lock_fp);
      printf("Release lock! ");
     }
     @unlink(PHP_LOCK_FILE);
     printf("php exit! ");
    }
    ?>

    将以上代码保存为phplock.php文件,在需要用到锁定功能的脚本代码中引入该文件即可,示例如下:

    <?php

    set_time_limit(0);
    require(dirname(__FILE__) . '/phplock.php');  //引入脚本文件锁定代码
     
    //test
    for($i=0; $i<10; $i++){
     echo str_repeat(" ", 1024);  //照顾一下像Firefox这种有比较大的缓冲区的浏览器
     echo $i."<br> ";
     flush();
     sleep(5);
    }
    ?> 

     需要注意的是,确保phplock.php文件所在目录具有写入权限!

  • 相关阅读:
    Linux 部署 nginx
    Linux 部署vue项目(使用nginx)
    git 操作规范
    mysql grant权限分配(转)。
    前端优化,包括css,jss,img,cookie
    关于js里的那一堆事件
    个人作业——软件工程实践总结作业
    Unity3D 快捷键
    Beta冲刺第二天
    Beta冲刺第一天
  • 原文地址:https://www.cnblogs.com/helloyb/p/3174035.html
Copyright © 2020-2023  润新知