/** * Starts the socket connection */ public function startSocket() { // get connection configuration $conf = Services::getConfiguration()->get('connection'); // validate configuration if (!isset($conf['hostname'], $conf['port'])) { throw new Exception("Invalid connection configuration!"); } // create socket // $this->socket = socket_create(AF_INET, SOCK_STREAM, 0); $this->socket = fsockopen($conf['hostname'], intval($conf['port'])); // try to connect /* if (!@socket_connect($this->socket, $conf['hostname'], intval($conf['port']))) { throw new Exception("Cannot connect to server: ".socket_strerror()); } */ }
/** * Loads the memcache extension */ public static function loadMemcache() { $memcache = Services::getConfiguration()->get('memcache'); if ($memcache === null or !extension_loaded('memcache')) { self::getConnection()->getProtocol()->sendLogLine("Cannot use memcache! No configuration found!"); } elseif (is_array($memcache['servers'])) { require_once SDIR . 'lib/system/cache/CacheSource.class.php'; self::$memcacheObj = new CacheSource(); // add server foreach ($memcache['servers'] as $server) { // create needed array $arguments = array(); // get server address if (!isset($server['address'])) { throw new Exception("Invalid memcache configuration: address tag is missing!"); } $arguments[] = $server['address']; // get port if (isset($server['port'])) { $arguments[] = $server['port']; } // get persistent option if (isset($server['persistent'])) { $arguments[] = (bool) intval($server['persistent']); } // add server call_user_func_array(array(self::$memcacheObj, 'addServer'), $arguments); // remove temp variables unset($arguments); } // flush old cache (we'll have old resources if the applications was killed) self::$memcacheObj->flush(); // test connection self::$memcacheObj->add('SERVICES_VERSION', SERVICES_VERSION); if (self::$memcacheObj->get('SERVICES_VERSION') !== false) { // add log entry self::getConnection()->getProtocol()->sendLogLine("Etablished connection to memcache server!"); } else { // add log entry self::getConnection()->getProtocol()->sendLogLine("An error occoured with memcache! I'll disable it ..."); // disable memcache self::$memcacheObj = null; } } }
/** * Creates a new instance of type Protocol */ protected function __construct() { // get configuration $conf = Services::getConfiguration()->get('connection'); // write vars foreach ($conf as $name => $val) { // I'm to lazy to add all vals ... ;-) if (property_exists($this, $name)) { $this->{$name} = $val; } } }