Chamilo is a learning management system focused on ease of use and accessibility
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.
chamilo-lms/main/chat/phpfreechat/lib/pear/System/SharedMemory.php

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;
}
// }}}
}
// }}}
?>