X-Git-Url: http://mop.ddnsfree.com/gitweb/?a=blobdiff_plain;f=web%2Fbriskin5%2FObj%2Fbriskin5.phh;h=1ad19372b06ef512f39e30b5ff9afad0427b98b3;hb=0d462f547c388b20d72a9de96955484636736108;hp=bfaddf432faf6fb1cc85a6649284233930c4bc21;hpb=1f5795fd45dcccc42e794089d14350c6b5c5fecd;p=brisk.git diff --git a/web/briskin5/Obj/briskin5.phh b/web/briskin5/Obj/briskin5.phh index bfaddf4..1ad1937 100644 --- a/web/briskin5/Obj/briskin5.phh +++ b/web/briskin5/Obj/briskin5.phh @@ -1,7 +1,10 @@ user = array(); $this->table = array(); $this->the_end = FALSE; - - if (($this->tok = ftok(FTOK_PATH."/table".$table_idx, "B")) == -1) { + $this->shm_sz = BRISKIN5_SHM_MIN; + if (($this->tok = @ftok(FTOK_PATH."/table".$table_idx, "B")) == -1) { echo "FTOK FAILED"; exit; } @@ -123,20 +127,24 @@ class Briskin5 { function &load_data($table_idx, $table_token = "") { GLOBAL $G_false, $sess; + $doexit = FALSE; $shm = FALSE; log_wr("TABLE_IDX ".FTOK_PATH."/table".$table_idx); - if (($tok = ftok(FTOK_PATH."/table".$table_idx, "B")) == -1) { - echo "FTOK FAILED"; - exit; - } do { - // if (shmchk_exists($tok) == FALSE) - if (locshm_exists($tok) == FALSE) + if (($tok = @ftok(FTOK_PATH."/table".$table_idx, "B")) == -1) { + log_main("ftok failed"); + $doexit = TRUE; break; + } - if (($shm = shm_attach($tok, BRISKIN5_SHM_DIMS)) == FALSE) + if (($shm_sz = sharedmem_sz($tok)) == -1) { + log_main("shmop_open failed"); + break; + } + + if (($shm = shm_attach($tok, $shm_sz)) == FALSE) break; if (($bri = @shm_get_var($shm, $tok)) == FALSE) @@ -159,72 +167,71 @@ class Briskin5 { shm_detach($shm); log_wr("briskin5 load_data failed"); + if ($doexit) + exit(); return ($G_false); } + function save_data(&$bri) { GLOBAL $sess; $ret = FALSE; $shm = FALSE; - $isacq = FALSE; log_main("SAVE BRISKIN5 DATA"); - // var_dump($bri); if (!isset($bri->tok)) return (FALSE); - do { - $isacq = TRUE; - - if (($shm = shm_attach($bri->tok, BRISKIN5_SHM_DIMS)) == FALSE) + while ($bri->shm_sz < BRISKIN5_SHM_MAX) { + if (($shm = shm_attach($bri->tok, $bri->shm_sz)) == FALSE) break; - // log_only("PUT_VAR DI ".strlen(serialize($bri))); - if (shm_put_var($shm, $bri->tok, $bri) == FALSE) { - log_only("PUT_VAR FALLITA ".strlen(serialize($bri))); - log_only(serialize($bri)); + if (@shm_put_var($shm, $bri->tok, $bri) != FALSE) { + shm_detach($shm); + return (TRUE); + } + if (shm_remove($shm) === FALSE) { + log_only("REMOVE FALLITA"); break; } - // log_main("QUI CI ARRIVA [".$bri->user[0]->name."]"); - $ret = TRUE; - } while (0); - + shm_detach($shm); + $bri->shm_sz += BRISKIN5_SHM_DLT; + } + + log_crit("save data failed!"); + if ($shm) shm_detach($shm); return ($ret); } + + function destroy_data($table_idx) { GLOBAL $sess; $ret = FALSE; $shm = FALSE; - $isacq = FALSE; - log_main("DESTROY BRISKIN5 DATA"); - do { - $isacq = TRUE; - log_main("DESTROY2 BRISKIN5 DATA"); - if (($tok = ftok(FTOK_PATH."/table".$table_idx, "B")) == -1) + if (($tok = @ftok(FTOK_PATH."/table".$table_idx, "B")) == -1) break; - if (($shm = shm_attach($tok, BRISKIN5_SHM_DIMS)) === FALSE) + if (($shm = @shmop_open($tok, 'a', 0, 0)) == FALSE) break; - if (shm_remove($shm) === FALSE) { - log_only("REMOVE FALLITA ".strlen(serialize($bri))); - log_only(serialize($bri)); + if (shmop_delete($shm) == 0) { + log_only("REMOVE FALLITA "); break; } @@ -453,4 +460,4 @@ function locshm_exists($tok) } -?> \ No newline at end of file +?>