X-Git-Url: http://mop.ddnsfree.com/gitweb/?a=blobdiff_plain;ds=inline;f=web%2FObj%2Fbrisk.phh;h=1893940a11b999cee6e17c2175ca15a44010a742;hb=dc12b4411ae8a71079e455ae017d84b044ff486a;hp=a4b58db7041a3a703bd78459170479b6ece766d4;hpb=5ff19da8aa0ab3169ea9d1688ec8a4a55d02528a;p=brisk.git
diff --git a/web/Obj/brisk.phh b/web/Obj/brisk.phh
index a4b58db..1893940 100644
--- a/web/Obj/brisk.phh
+++ b/web/Obj/brisk.phh
@@ -1015,7 +1015,7 @@ class Room {
var $table;
var $comm; // commands for many people
var $step; // current step of the comm array
- var $garbage_timeout;
+ // externalized var $garbage_timeout;
var $shm_sz;
function Room () {
@@ -1043,7 +1043,8 @@ class Room {
else
$this->table[$i]->auth_only = FALSE;
}
- $this->garbage_timeout = 0;
+ // externalized $this->garbage_timeout = 0;
+ Room::garbage_time_expire_set(0);
$this->shm_sz = SHM_DIMS_MIN;
}
@@ -1057,7 +1058,9 @@ class Room {
/* Garbage collector degli utenti in timeout */
$curtime = time();
- if ($force || $this->garbage_timeout < $curtime) {
+
+ // externalized if ($force || $this->garbage_timeout < $curtime) {
+ if ($force || Room::garbage_time_is_expired($curtime)) {
// FIXME BRISK4: include for each kind of table
require_once("${G_base}briskin5/Obj/briskin5.phh");
@@ -1206,7 +1209,8 @@ class Room {
}
log_rd2("GARBAGE UPDATED!");
- $this->garbage_timeout = time() + GARBAGE_TIMEOUT;
+ // externalized $this->garbage_timeout = time() + GARBAGE_TIMEOUT;
+ Room::garbage_time_expire_set(time() + GARBAGE_TIMEOUT);
$ismod = TRUE;
}
@@ -2279,7 +2283,7 @@ class Room {
shm_detach($shm);
for ($i = 0 ; $i < MAX_PLAYERS ; $i++) {
- $room->user[$i] = User::load_data($i);
+ $room->user[$i] = User::load_data($i, FALSE);
}
}
@@ -2377,32 +2381,33 @@ class Room {
User::save_data($user_park[$i], $i);
$room->user[$i] = $user_park[$i];
}
+ log_load("FINISH: ".($ret == TRUE ? "TRUE" : "FALSE"));
return ($ret);
}
- function lock_data()
+ static function lock_data()
{
- GLOBAL $sess;
-
- // echo "LOCK: ".FTOK_PATH."/main";
- // exit;
- if (($tok = @ftok(FTOK_PATH."/main", "B")) == -1) {
- return (FALSE);
- }
- // echo "FTOK ".$tok."
";
- if (($res = sem_get($tok)) == FALSE) {
- return (FALSE);
- }
- if (sem_acquire($res)) {
- log_lock("LOCK room");
- return ($res);
- }
- else
- return (FALSE);
+ GLOBAL $sess;
+
+ // echo "LOCK: ".FTOK_PATH."/main";
+ // exit;
+ if (($tok = @ftok(FTOK_PATH."/main", "B")) == -1) {
+ return (FALSE);
+ }
+ // echo "FTOK ".$tok."
";
+ if (($res = sem_get($tok)) == FALSE) {
+ return (FALSE);
+ }
+ if (sem_acquire($res)) {
+ log_lock("LOCK room");
+ return ($res);
+ }
+ else
+ return (FALSE);
}
- function unlock_data($res)
+ static function unlock_data($res)
{
GLOBAL $sess;
@@ -2486,6 +2491,49 @@ class Room {
return ($ret);
}
+ static function garbage_time_is_expired($tm)
+ {
+ $ret = TRUE;
+ $fp = FALSE;
+ do {
+ if (file_exists(PROXY_PATH) == FALSE)
+ mkdir(PROXY_PATH);
+ if (($fp = @fopen(PROXY_PATH."/room_garbage_time.expired", 'rb')) == FALSE)
+ break;
+ if (($s = fread($fp, 4)) == FALSE)
+ break;
+ if (strlen($s) != 4)
+ break;
+ $arr = unpack('Le', $s);
+ if ($arr['e'] > $tm)
+ $ret = FALSE;
+ } while (0);
+
+ if ($fp != FALSE)
+ fclose($fp);
+
+ log_rd2("END: return ".($ret ? "TRUE" : "FALSE"));
+
+ return ($ret);
+ }
+
+ static function garbage_time_expire_set($tm)
+ {
+ do {
+ if (file_exists(PROXY_PATH) == FALSE)
+ mkdir(PROXY_PATH);
+ if (($fp = @fopen(PROXY_PATH."/room_garbage_time.expired", 'wb')) == FALSE)
+ break;
+ fwrite($fp, pack("L",$tm));
+ fclose($fp);
+
+ return (TRUE);
+ } while (0);
+
+ return (FALSE);
+ }
+
+
} // end class Room
function make_seed()