List Info

Thread: note 61692 added to ref.shmop




note 61692 added to ref.shmop
user name
2006-02-09 19:28:16
I wrote a php memcache back in 2003 as a sort of proof of
concept
it is use on a few machines for doing heavy page load
caching...
it works very well.
Following are some of the core functions I made 
<?           
###############################################
#### shared mem functions
/*
    for debugging these
        use `ipcs` to view current memory
        use `ipcrm -m ` to remove
        on some systems use `ipcclean` to clean up unused
memory if you
        don't want to do it by hand
*/
###############################################
    function get_key($fsize, $file){
        if(!file_exists(TMPDIR.TMPPRE.$file)){
            touch(TMPDIR.TMPPRE.$file);
        }
        $shmkey = shmop_open(ftok(TMPDIR.TMPPRE.$file, 'R'),
"c", 0644, $fsize);
        if(!$shmkey) {
                return false;
        }else{
            return $shmkey;
        }//fi
    }
    function writemem($fdata, $shmkey){
        if(MEMCOMPRESS &&
function_exists('gzcompress')){
            $fdata = gzcompress($fdata, MEMCOMPRESSLVL);
        }
        $fsize = strlen($fdata);
        $shm_bytes_written = shmop_write($shmkey, $fdata,
0);
        updatestats($shm_bytes_written, "add");
        if($shm_bytes_written != $fsize) {
                return false;
        }else{
            return $shm_bytes_written;
        }//fi
    }
    function readmem($shmkey, $shm_size){
        $my_string = shmop_read($shmkey, 0, $shm_size);
        if(MEMCOMPRESS &&
function_exists('gzuncompress')){
            $my_string = gzuncompress($my_string);
        }
        if(!$my_string) {
                return false;
        }else{
            return $my_string;
        }//fi
    }
    function deletemem($shmkey){
        $size = shmop_size($shmkey);
        if($size > 0){ updatestats($size,
"del"); }
        if(!shmop_delete($shmkey)) {
            shmop_close($shmkey);
                return false;
        }else{
            shmop_close($shmkey);
            return true;
        }
    }
    function closemem($shmkey){
        if(!shmop_close($shmkey)) {
                return false;
        }else{
            return true;
        }
    }
    function iskey($size, $key){
        if($ret = get_key($size, $key)){
            return $ret;
        }else{
            return false;
        }
    }
################################################
?>
----
Server IP: 64.71.164.2
Probable Submitter: 66.251.40.246
----
Manual Page -- http://www
.php.net/manual/en/ref.shmop.php
Edit        -- http://master.php.net/manage/user-notes.php?action=
edit+61692
Delete: added to the manual -- htt
p://master.php.net/manage/user-notes.php?action=delete+61692
&report=yes&reason=added+to+the+manual
Delete: bad code            -- http://master.
php.net/manage/user-notes.php?action=delete+61692&report
=yes&reason=bad+code
Delete: spam                -- http://master.php.
net/manage/user-notes.php?action=delete+61692&report=yes
&reason=spam
Delete: useless             -- http://master.p
hp.net/manage/user-notes.php?action=delete+61692&report=
yes&reason=useless
Delete: non-english         -- http://mast
er.php.net/manage/user-notes.php?action=delete+61692&rep
ort=yes&reason=non-english
Delete: already in docs     -- http://
master.php.net/manage/user-notes.php?action=delete+61692&
;report=yes&reason=already+in+docs
Delete: other reasons       -- http://master.php.net/manage/user-
notes.php?action=delete+61692&report=yes
Reject      -- http://master.php.net/manage/user-
notes.php?action=reject+61692&report=yes
Search      -- http://ma
ster.php.net/manage/user-notes.php

-- 
PHP Notes Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub
.php

[1]

about | contact  Other archives ( Real Estate discussion Medical topics )