Example #1
0
 /**
  * 获取实例
  * @param string $config_name
  * @throws \Exception
  */
 public static function instance($config_name)
 {
     // memcached 驱动
     if (\Config\Store::$driver == \Config\Store::DRIVER_MC) {
         if (!isset(\Config\Store::${$config_name})) {
             echo "\\Config\\Store::{$config_name} not set\n";
             throw new \Exception("\\Config\\Store::{$config_name} not set\n");
         }
         if (!isset(self::$instance[$config_name])) {
             if (extension_loaded('Memcached')) {
                 self::$instance[$config_name] = new \Memcached();
             } elseif (extension_loaded('Memcache')) {
                 self::$instance[$config_name] = new \Memcache();
             } else {
                 sleep(2);
                 exit("extension memcached is not installed\n");
             }
             foreach (\Config\Store::${$config_name} as $address) {
                 list($ip, $port) = explode(':', $address);
                 self::$instance[$config_name]->addServer($ip, $port);
             }
         }
         return self::$instance[$config_name];
     } elseif (\Config\Store::$driver == \Config\Store::DRIVER_REDIS) {
         if (!isset(\Config\Store::${$config_name})) {
             echo "\\Config\\Store::{$config_name} not set\n";
             throw new \Exception("\\Config\\Store::{$config_name} not set\n");
         }
         if (!isset(self::$instance[$config_name])) {
             self::$instance[$config_name] = new \GatewayWorker\Lib\StoreDriver\Redis();
             $address = \Config\Store::getGateway();
             $timeout = 1;
             self::$instance[$config_name]->connect($address['host'], $address['port'], $timeout);
             //self::$instance[$config_name]->setOption(\Redis::OPT_SERIALIZER, \Redis::SERIALIZER_PHP);
         }
         return self::$instance[$config_name];
     } else {
         if (!isset(self::$instance[$config_name])) {
             self::$instance[$config_name] = new \GatewayWorker\Lib\StoreDriver\File($config_name);
         }
         return self::$instance[$config_name];
     }
 }