Documentation TYPO3 par Ameos |
00001 <?php 00002 00003 // security - hide paths 00004 if (!defined('ADODB_DIR')) die(); 00005 00006 global $ADODB_INCLUDED_MEMCACHE; 00007 $ADODB_INCLUDED_MEMCACHE = 1; 00008 00009 /* 00010 00011 V4.90 8 June 2006 (c) 2000-2006 John Lim (jlim#natsoft.com.my). All rights reserved. 00012 Released under both BSD license and Lesser GPL library license. 00013 Whenever there is any discrepancy between the two licenses, 00014 the BSD license will take precedence. See License.txt. 00015 Set tabs to 4 for best viewing. 00016 00017 Latest version is available at http://adodb.sourceforge.net 00018 00019 */ 00020 00021 function &getmemcache($key,&$err, $timeout=0, $host, $port) 00022 { 00023 $false = false; 00024 $err = false; 00025 00026 if (!function_exists('memcache_pconnect')) { 00027 $err = 'Memcache module PECL extension not found!'; 00028 return $false; 00029 } 00030 00031 $memcache = new Memcache; 00032 if (!@$memcache->pconnect($host, $port)) { 00033 $err = 'Can\'t connect to memcache server on: '.$host.':'.$port; 00034 return $false; 00035 } 00036 00037 $rs = $memcache->get($key); 00038 if (!$rs) { 00039 $err = 'Item with such key doesn\'t exists on the memcached server.'; 00040 return $false; 00041 } 00042 00043 $tdiff = intval($rs->timeCreated+$timeout - time()); 00044 if ($tdiff <= 2) { 00045 switch($tdiff) { 00046 case 2: 00047 if ((rand() & 15) == 0) { 00048 $err = "Timeout 2"; 00049 return $false; 00050 } 00051 break; 00052 case 1: 00053 if ((rand() & 3) == 0) { 00054 $err = "Timeout 1"; 00055 return $false; 00056 } 00057 break; 00058 default: 00059 $err = "Timeout 0"; 00060 return $false; 00061 } 00062 } 00063 return $rs; 00064 } 00065 00066 function putmemcache($key, $rs, $host, $port, $compress, $debug=false) 00067 { 00068 $false = false; 00069 $true = true; 00070 00071 if (!function_exists('memcache_pconnect')) { 00072 if ($debug) ADOConnection::outp(" Memcache module PECL extension not found!<br>\n"); 00073 return $false; 00074 } 00075 00076 $memcache = new Memcache; 00077 if (!@$memcache->pconnect($host, $port)) { 00078 if ($debug) ADOConnection::outp(" Can't connect to memcache server on: $host:$port<br>\n"); 00079 return $false; 00080 } 00081 00082 $rs->timeCreated = time(); 00083 if (!$memcache->set($key, $rs, $compress, 0)) { 00084 if ($debug) ADOConnection::outp(" Failed to save data at the memcached server!<br>\n"); 00085 return $false; 00086 } 00087 return $true; 00088 } 00089 00090 function flushmemcache($key=false, $host, $port, $debug=false) 00091 { 00092 if (!function_exists('memcache_pconnect')) { 00093 if ($debug) ADOConnection::outp(" Memcache module PECL extension not found!<br>\n"); 00094 return; 00095 } 00096 00097 $memcache = new Memcache; 00098 if (!@$memcache->pconnect($host, $port)) { 00099 if ($debug) ADOConnection::outp(" Can't connect to memcache server on: $host:$port<br>\n"); 00100 return; 00101 } 00102 00103 if ($key) { 00104 if (!$memcache->delete($key)) { 00105 if ($debug) ADOConnection::outp("CacheFlush: $key entery doesn't exist on memcached server!<br>\n"); 00106 } else { 00107 if ($debug) ADOConnection::outp("CacheFlush: $key entery flushed from memcached server!<br>\n"); 00108 } 00109 } else { 00110 if (!$memcache->flush()) { 00111 if ($debug) ADOConnection::outp("CacheFlush: Failure flushing all enteries from memcached server!<br>\n"); 00112 } else { 00113 if ($debug) ADOConnection::outp("CacheFlush: All enteries flushed from memcached server!<br>\n"); 00114 } 00115 } 00116 return; 00117 } 00118 ?>