当前位置:首页 > PHP教程 > php高级应用 > 列表

PHP进程锁类PHPLock程序代码

发布:smiling 来源: PHP粉丝网  添加日期:2014-06-15 23:33:21 浏览: 评论:0 

为了更好的控制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. { 
  27.     const PHPLOCK_TIMEOUT = 1200; 
  28.     static private $pid = null; 
  29.      
  30.     static public function lock(){ 
  31.         $key = self::__getKey(); 
  32.         self::$pid = time(); 
  33.         F($key, self::$pid); 
  34.         return true; 
  35.     } 
  36.      
  37.     static public function unlock(){ 
  38.         $key = self::__getKey(); 
  39.         if(self::$pid){ 
  40.             F($key, null); 
  41.             return true; 
  42.         } 
  43.         return; 
  44.     } 
  45.      
  46.     static public function islocked(){ 
  47.         $key = self::__getKey(); 
  48.         $time = F($key); 
  49.         if(!$time){ 
  50.             return false; 
  51.         }elseif(time() - $time >= self::getTimeout()){ 
  52.             self::unlock(); 
  53.             return false; 
  54.         }else{ 
  55.             return true; 
  56.         } 
  57.     } 
  58.      
  59.     static public function getTimeout(){ 
  60.         $key = str_replace(self::__getKey(), '_Lock', '_TIMEOUT'); 
  61.         $expire = C($key) ? C($key) : self::PHPLOCK_TIMEOUT; 
  62.         return $expire; 
  63.     } 
  64.      
  65.     static private function __getKey(){ 
  66.         return (defined('GROUP_NAME') ? GROUP_NAME.'_' : '') . MODULE_NAME . '_' . ACTION_NAME . '_Lock'; 
  67.     } 
  68. } 
  69. ?> 

Tags: PHP进程锁类 PHPLock程序

分享到: