为了更好的控制php程序同时操作的一些问题我整理了一个进程锁的类我们可以利用这个进程锁实现程序的控制,程序代码如下:
- <?php
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 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(), '_Lock', '_TIMEOUT');
- $expire = C($key) ? C($key) : self::PHPLOCK_TIMEOUT;
- return $expire;
- }
-
- static private function __getKey(){
- return (defined('GROUP_NAME') ? GROUP_NAME.'_' : '') . MODULE_NAME . '_' . ACTION_NAME . '_Lock';
- }
- }
- ?>
|