Heim  >  Artikel  >  php教程  >  PHP进程锁类PHPLock程序代码

PHP进程锁类PHPLock程序代码

WBOY
WBOYOriginal
2016-05-25 16:45:421077Durchsuche

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

<?php 
//+---------------------------------------------- 
//|    Usage: 
//+---------------------------------------------- 
//|    public function _initialize(){ 
//|        import(&#39;@.Util.PHPLock&#39;); 
//| 
//|        if(PHPLock::islocked()){ 
//|            echo "[+] Status: Locked\n"; 
//|            echo "[+] Exit\n"; 
//|            exit(); 
//|        }else{ 
//|            echo "[+] Status: Unlocked\n"; 
//|            echo "[-] Locking Now\n"; 
//|            PHPLock::lock(); 
//|        } 
//|    } 
//| 
//|    function __destruct(){ 
//|        if(true === PHPLock::unlock()){ 
//|            echo "[+] Unlock Success\n"; 
//|        } 
//|    }  
//+---------------------------------------------- 
class PHPLock 
{ 
    const PHPLOCK_TIMEOUT = 1200; 
    static private $pid = null; 
     
    static public function lock(){ 
        $key = self::__getKey(); 
        self::$pid = time(); 
        F($key, self::$pid); 
        return true; 
    } 
     
    static public function unlock(){ 
        $key = self::__getKey(); 
        if(self::$pid){ 
            F($key, null); 
            return true; 
        } 
        return; 
    } 
     
    static public function islocked(){ 
        $key = self::__getKey(); 
        $time = F($key); 
        if(!$time){ 
            return false; 
        }elseif(time() - $time >= self::getTimeout()){ 
            self::unlock(); 
            return false; 
        }else{ 
            return true; 
        } 
    } 
     
    static public function getTimeout(){ 
        $key = str_replace(self::__getKey(), &#39;_Lock&#39;, &#39;_TIMEOUT&#39;); 
        $expire = C($key) ? C($key) : self::PHPLOCK_TIMEOUT; 
        return $expire; 
    } 
     
    static private function __getKey(){ 
        return (defined(&#39;GROUP_NAME&#39;) ? GROUP_NAME.&#39;_&#39; : &#39;&#39;) . MODULE_NAME . &#39;_&#39; . ACTION_NAME . &#39;_Lock&#39;; 
    } 
}


文章链接:

随便收藏,请保留本文地址!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn