网站地图    收藏   

主页 > php专栏 > php应用 >

PHP进程锁类PHPLock程序代码 - php高级应用

来源:自学PHP网    时间:2014-11-27 22:16 作者: 阅读:

[导读] 为了更好的控制php程序同时操作的一些问题我整理了一个进程锁的类我们可以利用这个进程锁实现程序的控制,程序代码如下:?php +---------------------------------------------- |Usage: +------...

PHP进程锁类PHPLock程序代码

为了更好的控制php程序同时操作的一些问题我整理了一个进程锁的类我们可以利用这个进程锁实现程序的控制,程序代码如下:

  1. <?php 
  2. //+---------------------------------------------- 
  3. //|    Usage: 
  4. //+---------------------------------------------- 
  5. //|    public function _initialize(){ 
  6. //|        import('@.Util.PHPLock'); 
  7. //| 
  8. //|        if(PHPLock::islocked()){ 
  9. //|            echo "[+] Status: Locked\n"; 
  10. //|            echo "[+] Exit\n"; 
  11. //|            exit(); 
  12. //|        }else{ 
  13. //|            echo "[+] Status: Unlocked\n"; 
  14. //|            echo "[-] Locking Now\n"; 
  15. //|            PHPLock::lock(); 
  16. //|        } 
  17. //|    } 
  18. //| 
  19. //|    function __destruct(){ 
  20. //|        if(true === PHPLock::unlock()){ 
  21. //|            echo "[+] Unlock Success\n"; 
  22. //|        } 
  23. //|    }  
  24. //+---------------------------------------------- 
  25. class PHPLock 
  26.     const PHPLOCK_TIMEOUT = 1200; 
  27.     static private $pid = null; 
  28.      
  29.     static public function lock(){ 
  30.         $key = self::__getKey(); 
  31.         self::$pid = time(); 
  32.         F($key, self::$pid); 
  33.         return true; 
  34.     } 
  35.      
  36.     static public function unlock(){ 
  37.         $key = self::__getKey(); 
  38.         if(self::$pid){ 
  39.             F($key, null); 
  40.             return true; 
  41.         } 
  42.         return
  43.     } 
  44.      
  45.     static public function islocked(){ 
  46.         $key = self::__getKey(); 
  47.         $time = F($key); 
  48.         if(!$time){ 
  49.             return false; 
  50.         }elseif(time() - $time >= self::getTimeout()){ 
  51.             self::unlock(); 
  52.             return false; 
  53.         }else
  54.             return true; 
  55.         } 
  56.     } 
  57.      
  58.     static public function getTimeout(){ 
  59.         $key = str_replace(self::__getKey(), '_Lock''_TIMEOUT'); 
  60.         $expire = C($key) ? C($key) : self::PHPLOCK_TIMEOUT; 
  61.         return $expire
  62.     } 
  63.      
  64.     static private function __getKey(){ 
  65.         return (defined('GROUP_NAME') ? GROUP_NAME.'_' : '') . MODULE_NAME . '_' . ACTION_NAME . '_Lock'
  66.     } 
  67. ?> 

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论