$ttl){ file_put_contents($lockfile,TIMESTAMP); $ret = false; }else{ $ret = true; } }else{ file_put_contents($lockfile,TIMESTAMP); $ret = false; } break; case 'get': if(is_file($lockfile)){ $time = file_get_contents($lockfile); //如果锁过期重新生成锁 if(TIMESTAMP - $time > $ttl){ $ret = false; }else{ $ret = true; } }else{ $ret = false; } break; case 'rm': $ret = @unlink($lockfile); break; } return $ret; } private static function _process_cmd_db($cmd, $name, $ttl = 0) { $ret = ''; switch ($cmd) { case 'set': $ret = C::t('process')->insert(array('processid' => $name, 'expiry' => time() + $ttl), FALSE, true); break; case 'get': $ret = C::t('process')->fetch($name); if(empty($ret) || $ret['expiry'] < time()) { $ret = false; } else { $ret = true; } break; case 'rm': $ret = C::t('process')->delete_process($name, time()); break; } return $ret; } } ?>