note 61692 added to ref.shmop
| From: | joeldgatgmail dot com at osu1 dot php dot net | Date: | Thu, 09 Feb 2006 19:28:16 +0000 |
| Subject: | note 61692 added to ref.shmop | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-103381@lists.php.net to get a copy of this message | ||
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 {shmid} 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 -- http://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.php.net/manage/user-notes.php?action=delete+61692&report=yes&reason=useless
Delete: non-english -- http://master.php.net/manage/user-notes.php?action=delete+61692&report=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://master.php.net/manage/user-notes.php