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
|