X-Git-Url: https://mop.ddnsfree.com/gitweb/?a=blobdiff_plain;f=web%2FObj%2Fbrisk.phh;h=135d2999b7b8ceaa50786bed2337db31ff04a744;hb=f6a4ad0c8fed8ed0d3bab5fba9842cf00576c028;hp=67854cfbe18aa2b98e9388e28869a4808e9c1e0f;hpb=04de0e58bd8e0d0de4e317d79611dfdb71180d22;p=brisk.git diff --git a/web/Obj/brisk.phh b/web/Obj/brisk.phh index 67854cf..135d299 100644 --- a/web/Obj/brisk.phh +++ b/web/Obj/brisk.phh @@ -136,12 +136,12 @@ $mlang_brisk = array( 'btn_backstand'=> array( 'it' => 'torna in piedi', $G_lng = langtolng($G_lang); $G_all_points = array( 11,10,4,3,2, 0,0,0,0,0 ); -$G_brisk_version = "3.5.5"; +$G_brisk_version = "3.5.6"; /* MLANG: ALL THE INFO STRINGS IN brisk.phh */ -$root_wellarr = array( 'it' => array ( 'Brisk (Ver. '.$G_brisk_version.'), NOVITA\': quinta versione di test per la nuova gestione dei dati volatili, rivista gestione del ticker.', +$root_wellarr = array( 'it' => array ( 'Brisk (Ver. '.$G_brisk_version.'), NOVITA\': (tecnica) utilizzo di locking tipo lettori/scrittori al posto del locking esclusivo generico.', 'Se vuoi iscriverti alla Mailing List, cliccala!' ), - 'en' => array ( 'Brisk (Ver. '.$G_brisk_version.'), NEWS: third test version for the new volatile data management, ticker management refactored.', + 'en' => array ( 'Brisk (Ver. '.$G_brisk_version.'), NEWS: usage of reader/writer locking instead of generic exclusive locking.', 'If you want to subscribe our Mailing List, click it!' ) ); $G_room_help = array( 'it' => ' @@ -284,12 +284,40 @@ Copyright 2006-2009 Matteo Nasta
version '.$G_brisk_version.'

Copyright 2006-2009
Matteo Nastasi (aka mop)

'); +function mop_flush() +{ + flush(); + ob_flush(); +} + +function file_lock($fname, $is_exclusive) +{ + if (($res = fopen($fname, "r+")) == FALSE) { + return (FALSE); + } + + if (flock($res, ($is_exclusive ? LOCK_EX : LOCK_SH)) == FALSE) { + fclose($res); + return (FALSE); + } + + return ($res); +} + +function file_unlock($res) +{ + if ($res != FALSE) { + flock($res, LOCK_UN); + fclose($res); + } +} + function webservers_exceeded() { return(file_exists(PROXY_PATH."/webservers_exceded.flag")); } -function check_webservers() +function webservers_check() { GLOBAL $G_webserver_max; @@ -1117,7 +1145,7 @@ class Room { return ($ismod); } - check_webservers(); + webservers_check(); // FIXME BRISK4: include for each kind of table require_once("${G_base}briskin5/Obj/briskin5.phh"); @@ -2126,7 +2154,7 @@ class Room { log_auth("XXX", sprintf("TROVATO A QUESTO PUNTO [%d] sess [%s] name [%s]", $idx, $sess, $name_new)); - /* there is another user logged with your account and you and him have authenticated => che new user + /* there is another user logged with your account and you and him have authenticated => new user get the session of the old user */ if ($ghost > -1 && $ghost_auth && ($authenticate != FALSE)) { /* swap session */ @@ -2440,25 +2468,14 @@ class Room { static function lock_data($is_exclusive) { - 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, ($is_exclusive ? 1 : LOCK_SHARE_MAX) )) == FALSE) { - return (FALSE); - } - if (sem_acquire($res)) { + if (($res = file_lock(FTOK_PATH."/main", $is_exclusive)) != FALSE) { self::$delta_t = microtime(TRUE); log_lock("LOCK room [".self::$delta_t."]"); - + return ($res); } - else - return (FALSE); + + return (FALSE); } static function unlock_data($res) @@ -2467,7 +2484,7 @@ class Room { log_lock("UNLOCK room [".(microtime(TRUE) - (self::$delta_t))."]"); - return (sem_release($res)); + file_unlock($res); } @@ -3084,21 +3101,13 @@ class Warrant { static function lock_data($is_exclusive) { - GLOBAL $sess; - - if (($tok = @ftok(FTOK_PATH."/warrant", "B")) == -1) { - return (FALSE); - } - // echo "FTOK ".$tok."
"; - if (($res = sem_get($tok, ($is_exclusive ? 1 : LOCK_SHARE_MAX) )) == FALSE) { - return (FALSE); - } - if (sem_acquire($res)) { - self::$delta_t = microtime(TRUE); - log_lock("LOCK warrant [".self::$delta_t."]"); - return ($res); - } - else + if (($res = file_lock(FTOK_PATH."/warrant", $is_exclusive)) != FALSE) { + self::$delta_t = microtime(TRUE); + log_lock("LOCK warrant [".self::$delta_t."]"); + + return ($res); + } + return (FALSE); } @@ -3108,7 +3117,7 @@ class Warrant { log_lock("UNLOCK warrant [".(microtime(TRUE) - (self::$delta_t))."]"); - return (sem_release($res)); + file_unlock($res); } } @@ -3117,22 +3126,13 @@ class Poll { static function lock_data($is_exclusive) { - GLOBAL $sess; - - if (($tok = @ftok(FTOK_PATH."/poll", "B")) == -1) { - return (FALSE); - } - // echo "FTOK ".$tok."
"; - if (($res = sem_get($tok, ($is_exclusive ? 1 : LOCK_SHARE_MAX) )) == FALSE) { - return (FALSE); - } - if (sem_acquire($res)) { - self::$delta_t = microtime(TRUE); - log_lock("LOCK poll [".self::$delta_t."]"); - - return ($res); - } - else + if (($res = file_lock(FTOK_PATH."/poll", $is_exclusive)) != FALSE) { + self::$delta_t = microtime(TRUE); + log_lock("LOCK poll [".self::$delta_t."]"); + + return ($res); + } + return (FALSE); } @@ -3142,7 +3142,7 @@ class Poll { log_lock("UNLOCK poll [".(microtime(TRUE) - (self::$delta_t))."]"); - return (sem_release($res)); + file_unlock($res); } }