You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
116 lines
3.3 KiB
116 lines
3.3 KiB
<?php
|
|
|
|
/* vim: set expandtab tabstop=4 softtabstop=4 shiftwidth=4: */
|
|
/**
|
|
*
|
|
* common OO-style shared memory API
|
|
*
|
|
* PHP versions 4 and 5
|
|
*
|
|
* LICENSE: This source file is subject to version 3.0 of the PHP license
|
|
* that is available through the world-wide-web at the following URI:
|
|
* http://www.php.net/license/3_0.txt. If you did not receive a copy of
|
|
* the PHP License and are unable to obtain it through the web, please
|
|
* send a note to license@php.net so we can mail you a copy immediately.
|
|
*
|
|
* @category System
|
|
* @package System_Sharedmemory
|
|
* @author Evgeny Stepanischev <bolk@lixil.ru>
|
|
* @copyright 2005 Evgeny Stepanischev
|
|
* @license http://www.php.net/license/3_0.txt PHP License 3.0
|
|
* @version CVS: $Id:$
|
|
* @link http://pear.php.net/package/System_SharedMemory
|
|
*/
|
|
|
|
/**
|
|
*
|
|
* Backend independent OO-interface
|
|
*
|
|
* @category System
|
|
* @package System_Sharedmemory
|
|
* @package System_Sharedmemory
|
|
* @author Evgeny Stepanischev <bolk@lixil.ru>
|
|
* @copyright 2005 Evgeny Stepanischev
|
|
* @license http://www.php.net/license/3_0.txt PHP License 3.0
|
|
* @version CVS: $Id:$
|
|
* @link http://pear.php.net/package/System_SharedMemory
|
|
*/
|
|
|
|
// {{{ class System_SharedMemory
|
|
|
|
class System_SharedMemory
|
|
{
|
|
// {{{ &factory()
|
|
|
|
/**
|
|
* Create a new shared mem object
|
|
*
|
|
* @param string $type the shared mem type (or false on autodetect)
|
|
* @param array $options an associative array of option names and values
|
|
*
|
|
* @return object a new System_Shared object
|
|
*
|
|
*/
|
|
|
|
function &factory($type = false, $options = array())
|
|
{
|
|
if ($type === false) {
|
|
$type = System_SharedMemory::getAvailableTypes(true);
|
|
} else {
|
|
$type = ucfirst(strtolower($type));
|
|
}
|
|
|
|
require_once dirname(__FILE__).'/SharedMemory/'.$type . '.php';
|
|
$class = 'System_SharedMemory_' . $type;
|
|
|
|
$ref = &new $class($options);
|
|
return $ref;
|
|
}
|
|
|
|
// }}}
|
|
// {{{ getAvailableTypes()
|
|
|
|
/**
|
|
* Get available types or first one
|
|
*
|
|
* @param bool $only_first false if need all types and true if only first one
|
|
*
|
|
* @return mixed list of available types (array) or first one (string)
|
|
*
|
|
*/
|
|
|
|
function getAvailableTypes($only_first = false)
|
|
{
|
|
$detect = array
|
|
(
|
|
'eaccelerator' => 'Eaccelerator', // Eaccelerator (Turck MMcache fork)
|
|
'mmcache' => 'Mmcache', // Turck MMCache
|
|
'Memcache' => 'Memcache', // Memched
|
|
'shmop_open' => 'Shmop', // Shmop
|
|
'apc_fetch' => 'Apc', // APC
|
|
'apache_note' => 'Apachenote', // Apache note
|
|
'shm_get_var' => 'Systemv', // System V
|
|
/*'sqlite_open' => 'Sqlite', */ // SQLite
|
|
'file' => 'File', // Plain text
|
|
'fsockopen' => 'Sharedance', // Sharedance
|
|
);
|
|
|
|
$types = array();
|
|
|
|
foreach ($detect as $func=>$val) {
|
|
if (function_exists($func) || class_exists($func)) {
|
|
if ($only_first) {
|
|
return $val;
|
|
}
|
|
|
|
$types[] = $val;
|
|
}
|
|
}
|
|
|
|
return $types;
|
|
}
|
|
|
|
// }}}
|
|
}
|
|
// }}}
|
|
?>
|